小编pos*_*ism的帖子

如何使这个简单的OpenGL代码(在"宽松"3.3和4.2配置文件中工作)在严格的3.2和4.2核心配置文件中工作?

我有一些3D代码,我注意到它不会在严格的核心配置文件中呈现,但在"正常"(未明确请求为核心)配置文件上下文中很好.为了找出问题,我编写了最简单的最简单的OpenGL程序,只绘制了一个三角形和一个矩形:

在此输入图像描述

我在这里发布了OpenGL程序作为Gist.

useStrictCoreProfile变量设置为false,程序不会向控制台输出错误消息,并根据上面的屏幕截图绘制四边形和三角形,包括Intel HD OpenGL 3.3和带OpenGL 4.2的GeForce.

但是,将useStrictCoreProfile设置为true,它会清除背景颜色但不会绘制tri和quad,控制台输出是这样的:

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
Run Code Online (Sandbox Code Playgroud)

...如果要求4.2严格的核心配置文件而不是3.2,则同样的问题.适用于3种不同的nvidia GPU,因此我假设我没有正确地符合严格的核心配置文件.我做错了什么,我该如何解决这个问题?

注意,你不会在上面的Gist中找到glEnableVertexAttribArray调用,因为它我正在导入的glutil包中 - 但这确实被称为gist的compileShaders()函数中的最后一步.

opengl go opengl-3 opengl-4 vertex-attributes

7
推荐指数
1
解决办法
1628
查看次数

标签 统计

go ×1

opengl ×1

opengl-3 ×1

opengl-4 ×1

vertex-attributes ×1