我正在使用帶有PointSprites的粒子系統(受Cocos2D Source的啓發)。但我不知道如何重建功能的OpenGL ES 2.0的用於粒子系統的GLSL PointSprite
glEnable(GL_POINT_SPRITE_OES);
glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
glPointSizePointerOES(GL_FLOAT,sizeof(PointSprite),(GLvoid*) (sizeof(GL_FLOAT)*2));
glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
glDisable(GL_POINT_SPRITE_OES);
這些使用OpenGL ES 2.0的範圍內時產生BAD_ACCESS。 我應該簡單地使用每個PointSprite 2個三角?但這可能不是非常有效(額外頂點的開銷)。
編輯: 所以,我從建議的解決方案新的問題: https://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528
是要通過許多不同的尺寸在批調用的可能性。我想使用一個屬性而不是一個統一的,但是我需要總是將一個PointSize傳遞給我的着色器 - 即使我不繪製GL_POINTS。那麼,也許是第二個着色器(僅用於GL_POINTS的着色器)?我並不知道在繪製例程中每幀切換着色器的開銷(因爲如果使用了粒子系統,我自然也需要渲染常規的GL_TRIANGLES而不使用pointSize)......對此有何看法?
這應該是你在找什麼: http://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528 – rgngl
謝謝!該鏈接非常有用。所以,這個解決方案唯一的問題是可以做類似於GLSL上的「glPointSizePointerOES」的事情(在鏈接上建議使用統一的點大小 - 在批次調用中不能繪製大小不同的不同點與glDrawArrays)。我想使用一個屬性而不是一個統一的,但是我需要總是將一個PointSize傳遞給我的着色器 - 即使我不繪製GL_POINTS。那麼,也許是第二個着色器(僅用於GL_POINTS的着色器)?對此有何想法? – Constantin