Проблема текстурирования OpenGL: текстура смешивается с примитивным цветом

Так что я довольно новичок в OpenGL и текстурировании. У меня есть плоская плоскость, похожая на примитив (2 треугольника), на которую я пытаюсь нанести изображение. Я сделал это 2 способами. Первым способом я написал шейдер Fragment, который использует форму sampler2d и вызвал texture2d для сопоставления пикселя изображения с примитивом, и это прекрасно работает и выглядит так:

Правильный

Второй подход, который я использовал, я использовал glEnable и не использовал никаких шейдеров, и изображение выглядело так:

Неправильно

Большая часть этого кода — рабочий проект, поэтому я не могу опубликовать его, но я в основном рендеринг так:

void draw()
{
glColor4f(0.0, 1.0, 0.0, 1.0)

glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEX_COORD_ARRAY);

glBindTexture(GL_TEXTURE_2D, id);

glVertexPointer(3, GL_FLOAT, 0, vertices);
glNormalPointer(GL_FLOAT, 0, normals);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);

// then draw arrays....
// disable client states}

Я знаю, что зеленый цвет исходит от моего вызова glColor, но я думаю, я просто хочу понять, что здесь происходит за кулисами? Я бы подумал, что если я вызову glColor до того, как отрендерить, ни одно изображение не будет отображаться, потому что оно окрашивает все в зеленый цвет. Это имеет смысл с точки зрения шейдеров, но я не понимаю такой подход. Как мне заставить его работать, используя старый метод без шейдеров, как я делал с шейдерами?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]