我很清楚,直接API(如glBegin(); glVertex(); glBegin();
)对渲染复杂场景和游戏等真实世界应用程序无效。
但是为了调试和测试小东西,它非常有用。例如。用于调试场景中物体的物理(矢量的可视化,如速度矢量,力......)。
您可能会问 - 为什么不回归OpenGL 1.x这样的小事?因为程序的其余部分使用OpenGL 3.0功能,因为我真的很喜欢片段着色器。
有没有办法在OpenGL 3.0及更高版本中使用它? 或者如果我不想像
那样写整个仪式,那么什么是debuging的策略glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(2, vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glBufferData(GL_ARRAY_BUFFER, 8 * sizeof(GLfloat), diamond, GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
glBufferData(GL_ARRAY_BUFFER, 12 * sizeof(GLfloat), colors, GL_STATIC_DRAW);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(1);
glDrawArrays(GL_LINES, 0, 4);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDeleteProgram(shaderprogram);
glDeleteBuffers(2, vbo);
glDeleteVertexArrays(1, &vao);
我想绘制的每一支箭头?
答案 0 :(得分:2)
如果使用兼容性配置文件创建上下文,您仍然可以使用OpenGL 3.2或更高版本的所有旧功能。只有核心配置文件删除了旧版功能。
大多数平台似乎仍支持兼容性配置文件。一个值得注意的例外是Mac OS,其中3.x上下文仅受Core Profile支持。
直到OpenGL 3.1,只有一个配置文件。兼容性和核心的分裂发生在3.2。
使用较新的界面,一旦掌握了它,就不会那么糟糕。如果你的调试使用相对重复,你总是可以编写一些很好的实用程序类来提供更方便的接口。