gpt4 book ai didi

opengl - 结合 glVertexPointer 和 glVertexAttribPointer 会出现问题

转载 作者:行者123 更新时间:2023-12-02 11:55:41 34 4
gpt4 key购买 nike

首次使用程序渲染顶点缓冲区时遇到问题,然后在没有程序的情况下渲染不同的顶点缓冲区。

对于第一个缓冲区,当启用程序时,我使用类似于以下的代码:

glBindBuffer( GL_ARRAY_BUFFER, m_id );
GLint location = glGetAttribLocation( pID, "position" );
glEnableVertexAttribArray( location );
glVertexAttribPointer( location, 3, GL_FLOAT, GL_FALSE, 3 * sizeof( GLfloat ), 0 );
glDrawArrays( m_mode, 0, m_numVertices );

第二个,没有程序:

glBindBuffer( GL_ARRAY_BUFFER, m_id );
glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer( 3, GL_FLOAT, 3 * sizeof( GLfloat ), 0 );
glDrawArrays( m_mode, 0, m_numVertices );

两个代码路径单独工作都很好,但是按顺序完成时“有程序”->“无程序”,第二个似乎使用第一个的缓冲区,并且按照“无程序”->“有程序”的顺序,第一个未绘制(在第二次迭代中)。

现在这表明我错过了由 glEnableVertexAttribArray block 完成的一些状态更改,但我不明白是什么状态更改导致了问题。

ps 我使用和不使用程序进行渲染的原因是,在我使用的场景图库中,您可以打开或关闭每个节点的程序。

最佳答案

尝试添加

glDisableVertexAttribArray( location ); // location of "position"

在切换到固定功能渲染之前。

关于opengl - 结合 glVertexPointer 和 glVertexAttribPointer 会出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286264/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com