"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu triângulo OpenGL não está sendo renderizado no Go? Investigando um problema de buffer de vértice.

Por que meu triângulo OpenGL não está sendo renderizado no Go? Investigando um problema de buffer de vértice.

Publicado em 2024-11-06
Navegar:348

Why is My OpenGL Triangle Not Rendering in Go? Investigating a Vertex Buffer Issue.

OpenGL Vertex Buffer Issue in Go

Em uma tentativa de exibir um triângulo usando OpenGL em Go, um usuário encontrou um problema onde o vértice buffer falhou ao renderizar a forma. O código Go foi derivado de um tutorial, mas ao contrário de seu equivalente C, ele não produziu nenhuma saída.

Causa do problema

A causa raiz do problema coloque os argumentos passados ​​para vertexAttrib.AttribPointer(). Especificamente, o usuário especificou incorretamente (void*)0 como o deslocamento do buffer da matriz. Isso resultou na falha do aplicativo em encontrar os dados do vértice.

Solução

Para corrigir o problema, o usuário mudou para o ramo de trabalho das ligações banthar e fez o seguintes ajustes:

  • Argumentos AttribPointer: A chamada vertexAttrib.AttribPointer() foi atualizada para usar nil para o deslocamento do buffer da matriz e gl.FLOAT para o tipo de dados:
vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset
  • BufferData Length: O comprimento passado para gl.BufferData() foi modificado para especificar o tamanho em bytes, em vez do número de elementos:
data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)
[...]

Notas adicionais

  • Pode haver uma maneira mais eficiente de passar o comprimento correto para BufferData.
  • O A chamada glGetError não retornou nenhum erro, indicando que o problema resultou de valores de argumento incorretos.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3