Opengl FSAA多采样和GLVERTEXPOINT/GLCOLORPOINT的wgl上下文是否兼容

Opengl FSAA多采样和GLVERTEXPOINT/GLCOLORPOINT的wgl上下文是否兼容,opengl,antialiasing,Opengl,Antialiasing,我希望这是正确的语言来描述我所做的!我已经创建了一个支持FSAA的WGL OpenGL上下文。我已经设法通过使用着色器和VBO进行渲染 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); glEnableVertexAttribArra

我希望这是正确的语言来描述我所做的!我已经创建了一个支持FSAA的WGL OpenGL上下文。我已经设法通过使用着色器和VBO进行渲染

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
哪种类型在简单的OpenGL上下文中工作[不支持FSAA]。在FSAA WGL上下文中[没有加载任何着色器,因此我可以使用固定管道],我得到的只是我清除屏幕的背景颜色-它似乎不会渲染任何东西。在FSAA WGL上下文中是否不支持glVertexPointer etc命令?或者,对于WGL上下文,我必须使用着色器吗?

您不能使用
glVertexPointer(…)
glColorPointer(…)
,等等。。。在向前兼容的上下文中。 您的问题与MSAA无关(尽管使用64x会让人大吃一惊),相反,您已经告诉GL消除所有已弃用的内容。就限制性而言,向前兼容的上下文是超越核心的一步。有些东西不推荐使用,但在核心中没有删除,比如宽线条。。。forward compatible将删除任何在core中仍然有效的已弃用内容


然而,
glColorPointer(…)
两个,已弃用并从核心中删除。必须从上下文标志中删除前向兼容位才能使用它。

能否共享像素格式/上下文设置的关键部分,主要是标志?听起来您可能已经选择了核心概要文件上下文。另外,glGetError()是否返回任何错误代码?我猜供应商可能只支持核心配置文件与某些其他功能的结合,但我会发现在这种情况下这是令人惊讶的{WGL_DRAW_TO_WINDOW_ARB,GL_TRUE,WGL_SUPPORT_OPENGL_ARB,GL_TRUE,WGL_DOUBLE_BUFFER_ARB,GL_TRUE,WGL_PIXEL_TYPE_ARB,WGL_TYPE_RGBA_ARB,WGL_SAMPLE_BUFFERS_ARB,GL_TRUE,WGL_SAMPLE_SAMPLE_SAMPLES_ARB_ARB,64,WGL_COLOR_BITS_BITS_ARB,32,wgll_深度_BITS_BITS_ARB,24,wgll_深度////`
const int iPixelFormatAttribList[]={WGL_DRAW_TO_WINDOW_ARB,GL_TRUE,WGL_SUPPORT_OPENGL_ARB,GL_TRUE,WGL_DOUBLE_BUFFER_ARB,GL_TRUE,WGL_像素_TYPE_RGBA_ARB,WGL_采样_BUFFERS_ARB,GL_TRUE,WGL_采样率,WGL_采样率,64,WGLïïïïïï颜色位ïARB,32位,WGLïïïïïï
int-iContextAttribs[]={WGL_-CONTEXT_-MAJOR_-VERSIONARB、imajor版本、WGL_-CONTEXT_-MINOR版本、iminorvision、WGL_-CONTEXT_-FLAGS_-ARB、WGL_-CONTEXT_-FORWARD_-COMPATIBLE_-BIT_-ARB、0//-End-of-of-attributes-list};int-ipiPixelFormat、inumFormat、inumFormat、(hDC,iPixelFormatAttribList,NULL,1,&iPixelFormat,(UINT*)和iNumFormats);
@reto对格式化表示歉意-无法解决如何使用它!