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