我正在尝试将我为 iOS 制作的简单 OpenGL ES 2.0 渲染器移植到 OS X 桌面,我遇到了“无渲染”问题,我没有收到任何错误报告,所以我很茫然该怎么办。到目前为止,我已将问题缩小到我对 的调用glVertexAttrib4f
,该调用仅在 OS X 中有效。任何人都可以查看以下代码并了解为什么调用glVertexAttrib4f
无法在桌面上运行?:
void Renderer::drawTest()
{
gl::clear( mBackgroundColor );
static Vec2f vertices[3] = { Vec2f( 0, 0 ), Vec2f( 0.5, 1 ), Vec2f( 1, 0 ) };
static int indices[3] = { 0, 1, 2 };
mShader.bind();
glEnableVertexAttribArray( mAttributes.position );
glVertexAttribPointer( mAttributes.position, 2, GL_FLOAT, GL_FALSE, 0, &vertices[0] );
#ifdef USING_GENERIC_ARRAY_POINTER
// works in iOS /w ES2 and OSX:
static Color colors[3] = { Color( 0, 0, 1 ), Color( 0, 0, 1 ), Color( 0, 0, 1 ) };
glEnableVertexAttribArray( mAttributes.color );
glVertexAttribPointer( mAttributes.color, 3, GL_FLOAT, GL_FALSE, 0, &colors[0] );
#else // using generic attribute
// works in iOS, but doesn't work in OSX ?:
glVertexAttrib4f( mAttributes.color, 0, 1, 1, 1 );
#endif
glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, &indices[0] );
errorCheck(); // calls glGetError, which always returns GL_NO_ERROR
}
注意:这是我从更复杂的东西中删除的示例代码,请原谅我没有让它更完整。
版本:桌面 OS X 是 2.1 ATI-7.18.18 iPhone 模拟器是 OpenGL ES 2.0 APPLE