Używam ParticleSystem z PointSprites (inspirowane przez źródło Cocos2D). Ale zastanawiam się, jak odbudować funkcjonalność dla OpenGL ES 2.0GLSL PointSprite dla układu cząsteczek
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);
te generują BAD_ACCESS przy użyciu kontekstu OpenGL ES 2.0. Czy powinienem po prostu przejść z 2 TRÓJKĄTAMI na PointSprite? Ale to prawdopodobnie nie jest zbyt wydajne (obciążenie dla dodatkowych wierzchołków).
EDIT: Tak, mój nowy problem z proponowanego rozwiązania z: https://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528
możliwość przejść wiele różnych rozmiarów w wywołaniu wsadowym. Pomyślałem o użyciu Atrybutu zamiast Munduru, ale wtedy musiałbym przekazać zawsze PointSize do moich shaderów - nawet jeśli nie rysuję GL_POINTS. Więc może drugi shader (tylko shader dla GL_POINTS) ?! Nie jestem świadomy kosztów związanych z przełączaniem shaderów na każdą klatkę w procedurze rysowania (ponieważ w przypadku użycia systemu cząsteczek, chcę naturalnie renderować regularne GL_TRIANGLES bez rozmiaru punktu) ... Jakieś pomysły na ten temat?
To powinno być to, czego szukasz: http://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528 – rgngl
Dziękujemy! Ten link jest bardzo przydatny. Tak więc, moim jedynym problemem z tym rozwiązaniem jest możliwość zrobienia czegoś podobnego do "glPointSizePointerOES" na GLSL (na łączu sugeruje się użycie jednolitego dla rozmiaru punktu - tak wiele różnych punktów o różnych rozmiarach nie jest losowanych w wywołaniu wsadowym z glDrawArrays). Pomyślałem o użyciu Atrybutu zamiast Munduru, ale wtedy musiałbym przekazać zawsze PointSize do moich shaderów - nawet jeśli nie rysuję GL_POINTS. Więc może drugi shader (tylko shader dla GL_POINTS) ?! Jakieś pomysły na ten temat? – Constantin