我希望这是描述我所做的一切的正确方式!我创建了一个支持FSAA的WGL OpenGL上下文。我通过使用
glBindBuffer(GL_ARRAY_BUFFER, my_gl_vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data[0][0])*9, g_vertex_buffer_data, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, my_gl_vertexbuffer);
glVertexAttribPointer(
0,
3,
GL_FLOAT,
GL_FALSE,
0,
(void*)0
);
glBindBuffer(GL_ARRAY_BUFFER, my_gl_colorbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_color_buffer_data[0][0])*9, g_color_buffer_data, GL_STATIC_DRAW);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, my_gl_colorbuffer);
glVertexAttribPointer(
1, // attribute. No particular reason for 1, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
glDrawArrays(GL_TRIANGLES, 0, 3); // 3 indices starting at 0 -> 1 triangle我得到一个输出,没有照明,因为我没有照明计算在我的着色器,因为我有3盏灯照亮了现场。
所以有人建议我可以
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, g_vertex_buffer_data);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(3, GL_FLOAT, 0,g_color_buffer_data);
glDrawArrays(GL_TRIANGLES, 0, 3); // 3 indices starting at 0 -> 1 triangle哪种类型在不支持FSAA的简单OpenGL上下文中工作。在没有任何着色器加载的FSAA WGL上下文中,我可以使用固定的管道,我得到的全部是我清除屏幕到的背景颜色-它似乎没有渲染任何东西。FSAA上下文中不支持glVertexPointer等命令吗?或者,对于WGL上下文,我必须使用着色器吗?
发布于 2014-05-16 17:33:32
你不能使用glVertexPointer (...),glColorPointer (...)等.在向前兼容的上下文中。
您的问题与MSAA无关(尽管使用64x会引起眉毛),相反,您已经告诉GL消除所反对的一切。在限制性方面,向前兼容的上下文是超越核心的一步。有些东西是不推荐的,但在核心中不被移除,比如宽线.前向兼容移除在核心中仍然有效的任何不推荐的内容。
尽管如此,glColorPointer (...)既是,也是,它被弃用并从核心中删除。必须从上下文标志中删除与前向兼容的位才能使用它。
https://stackoverflow.com/questions/23696637
复制相似问题