>  기사  >  백엔드 개발  >  My Go OpenGL 삼각형이 계속 보이지 않는 이유는 무엇입니까?

My Go OpenGL 삼각형이 계속 보이지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 05:55:30381검색

 Why Does My Go OpenGL Triangle Remain Invisible?

OpenGL 정점 버퍼가 Go에서 삼각형을 표시하지 못함

Go에서 OpenGL을 사용하여 간단한 삼각형을 만드는 방법에 대한 튜토리얼을 복제하려는 시도에서, 개인은 정점 버퍼를 사용하여 모양을 표시하는 데 어려움을 겪었습니다. 창이 열리고 배경이 파란색으로 변하는 동안 삼각형은 보이지 않은 채로 남아 있습니다.

제공된 코드 조각에는 정점 버퍼를 생성한 다음 glDrawArrays를 사용하여 삼각형을 그리는 작업이 포함됩니다. 그러나 작동하는 코드의 c 버전에서 AttribPointer 함수는 배열 버퍼 오프셋을 지정하기 위해 매개변수(void*)0을 사용하는 반면, Go 버전에서는 제공된 오프셋 인수가 애플리케이션을 충돌시키고 nil은 그렇지 않습니다. 둘 중 하나도 작동하지 않는 것 같습니다.

banthar 바인딩의 작업 분기를 사용하고 AttribPointer 및 BufferData에 대한 호출을 다음과 같이 변경하는 업데이트된 솔루션이 있습니다.

<code class="go">vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset

data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)</code>

크기를 바이트 단위로 전달하여 BufferData를 실행하고 AttribPointer에서 배열 버퍼 오프셋을 nil로 설정하면 문제가 해결되어 삼각형이 성공적으로 표시되었습니다.

위 내용은 My Go OpenGL 삼각형이 계속 보이지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.