我試圖將我爲iOS製作的簡單OpenGL ES 2.0渲染器移植到OS X桌面,並且我遇到了「無法渲染」的問題,並且我沒有收到任何錯誤報告,所以我在一個損失該怎麼辦。到目前爲止,我已將問題縮小到撥打glVertexAttrib4f
的電話號碼,該號碼僅適用於OS X.任何人都可以看看下面的代碼,看看爲什麼glVertexAttrib4f
的呼叫不能在桌面上工作?:glVertexAttrib4f在OS X中不起作用,但在iOS中正常工作?
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-18年7月18日 iPhone模擬器是OpenGL ES 2.0的APPLE
定義「作品」。這個功能應該做什麼?當您嘗試調用'glVertexAttrib4f'時,您是否刪除了顏色數組? –
作品我的意思是它顯示在屏幕右上角的一個三角形,在iOS和OS X.是的,我只做'glVertexAttribPointer'方法或'glVertexAttrib4f'方法,而不是兩個。我會嘗試編輯代碼,使其更清晰 –