Вопрос о glBindTexture - PullRequest
       11

Вопрос о glBindTexture

2 голосов
/ 11 августа 2011

Это метод, который я использую для рисования спрайтов:

public void DrawSprite(Sprite sprite)
        {
            Gl.glBegin(Gl.GL_TRIANGLES);
            {
                for (int i = 0; i < Sprite.VertexAmount; i++)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.Id);
                    DrawImmediateModeVertex(
                    sprite.VertexPositions[i],
                    sprite.VertexColors[i],
                    sprite.VertexUVs[i]);
                }
            }
            Gl.glEnd();
        }

DrawImmediateModeVertex - рисует одну вершину.

Должен ли я получить Gl.glBindTexture из цикла for?Также странные вещи случаются при рендеринге текстуры, хотя я предоставляю спрайты с разными идентификаторами текстур, каждый раз рисуется одна и та же текстура.

Ответы [ 2 ]

6 голосов
/ 11 августа 2011

С Документация OpenGL :

GL_INVALID_OPERATION генерируется, если glBindTexture выполняется между выполнение glBegin и соответствующее выполнение glEnd.

Вы должны извлечь glBindTexture снаружи glBegin ... glEnd pair

0 голосов
/ 11 августа 2011

Да, переместите привязку за пределы цикла, нет необходимости повторно связывать одну и ту же текстуру.

...