Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

OpenGL и текстуры

Hidusa Ученик (242), закрыт 11 месяцев назад
у меня есть код который должен отображать текстуру, но по какой-то причине он её смешивает и рисует на объекте сплошным цветом я уже долго пытаюсь решить проблему у меня не получается (не кидайте в меня помидоры это всего лишь тестовый код чтобы понять как работают текстуры я знаю что в коде много всего ужасного, но это не криминально я надеюсь)
код <- тут код
Дополнен 1 год назад
Короче по 1 видео из ютуба я понял все свои ошибки первой ошибкой была сама загрузка текстуры я изменил теперь она выгляди так

 int width, height, nrChannels; 
unsigned char* data = stbi_load("texture.jpg", &width, &height, &nrChannels, 0);

//std::cout << width << " " << height << "\n";

if (data)

{

//glGenerateMipmap(GL_TEXTURE_2D);

glGenTextures(1, &textureID);

glBindTexture(GL_TEXTURE_2D, textureID);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

glBindTexture(GL_TEXTURE_2D, textureID);

}

else

{

// Обработка ошибки загрузки текстуры

std::cout << "Failed to load texture" << std::endl;

}

stbi_image_free(data);
затем была ошибка использовать
 glTexCoord2f(1, 1); 
вместо неё я использую
 glVertexAttrib2f(tc, 1, 1); 
и получается
 int tc = glGetAttribLocation(shaderProgram, "Coord"); 

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureID);

glUniform1i(textureSamplerLocation, 0);
glUniform1i(boolColor, false);

// Рисуем объект с применением текстуры
glBegin(GL_QUADS);

glVertexAttrib2f(tc, 0, 0);
glVertex3f(-10, -0.5f, -10);

glVertexAttrib2f(tc, 1, 0);
glVertex3f(10, -0.5f, -10);

glVertexAttrib2f(tc, 1, 1);
glVertex3f(10, -0.5f, 10);

glVertexAttrib2f(tc, 0, 1);
glVertex3f(-10, -0.5f, 10);
glEnd();
если кто-то также допустит такую же ошибку надеюсь это вам поможет :D
Дополнен 1 год назад
и вот текстура успешно наложиласьа вот так она выглядела до всех манипуляций тут просто видимо все пиксели смешивались и текстура была сплошным цветом так как в шейдер не поступали вершины текстуры по всей видимости
Лучший ответ
del Просветленный (20614) 1 год назад
Цвет пиксиля опридиляецо в 312 строчке твоего кода. условие всигда будит истинным.
HidusaУченик (242) 1 год назад
Нет если даже эту строчку убрать ничего не поменяется цвета всё также будут смешиваться
del Просветленный (20614) Hidusa, естественно что мало что паминяецо если удалить строчку. проблема в том что ты не панимаешь как твоя копипаста работает.
Остальные ответы
Похожие вопросы