Ich hatte einige 3D-Code, die ich nicht in einem strengen Kernprofil, aber gut in einem "normalen" Profilkontext (nicht explizit angefordert-wie-nur-Kern) merkte. Um das Problem zu isolieren, ich habe die kleinste möglichst einfache OpenGL Programm Zeichnung nur ein Dreieck und ein Rechteck geschrieben:Wie kann ich diesen einfachen OpenGL-Code (arbeitet in einem "nachsichtig" 3.3 und 4.2 Profil) in einem strengen 3.2 und 4.2 Kernprofil arbeiten?
ich, dass OpenGL Programm as a Gist here gebucht habe.
Mit dem useStrictCoreProfile Variable auf falsch, gibt das Programm keine Fehlermeldungen an die Konsole und zeichnet ein Quad und ein Dreieck nach dem obigen Screenshot, sowohl auf einem Intel-HD OpenGL 3.3 und auf einer GeForce mit OpenGL 4.2 .
jedoch mit useStrictCoreProfile Satz wahr, es ist die Hintergrundfarbe löscht aber nicht ziehen die drei & Quad, ist Konsolausgabe dies:
GLCONN: OpenGL 3.2.0 @ NVIDIA Corporation GeForce GT 640M LE/PCIe/SSE2 (GLSL: 1.50 NVIDIA via Cg compiler)
LASTERR: OpenGL error at step 'render.VertexAttribPointer()': GL_INVALID_OPERATION
LASTERR: OpenGL error at step 'render.DrawArrays()': GL_INVALID_OPERATION
LASTERR: OpenGL error at step 'render.VertexAttribPointer()': GL_INVALID_OPERATION
LASTERR: OpenGL error at step 'render.DrawArrays()': GL_INVALID_OPERATION
LASTERR: OpenGL error at step '(post loop)': GL_INVALID_OPERATION
EXIT
... wenn ein 4.2 strenge Kern Profil wird anstelle von 3.2 angefordert, gleiches Problem. Gilt für 3 verschiedene nvidia GPUs, also gehe ich davon aus, dass ich das strikte Core-Profil nicht richtig erfülle. Was habe ich falsch gemacht, und wie kann ich das beheben?
Hinweis, nicht finden Sie einen glEnableVertexAttribArray Anruf in dem obigen Gist, wie es inside the glutil package ist ich importieren - aber als letzter Schritt bekommt compileShaders() func in dem Kern des genannt.
Haben Sie versucht, die GL_ARB_debug_output Erweiterung mit nützlichen Fehlermeldungen als „GL_INVALID_OPERATION“ zu bekommen? Es ist ein bisschen mühsam einzurichten, aber es lohnt sich. – postgoodism
+1 für das Teilen eines Beispiels eines möglichst einfachen OpenGL-Programms für Go – ANisus
Nun, um fair zu sein, ist es nicht wirklich das "kleinste OpenGL-Programm für Go", um fair zu sein ... man könnte es reduzieren ;) – metaleap