Я пытаюсь сделать анимацию в OpenGL, мои вершины и анимации работают, но я хотел бы добавить к нему фоновое изображение с файлом, например, bmp или чем-то еще.
Итак, после нескольких чтений я пробую технику квадов, которая просто показывает квад и привязывает к нему текстуру.
Я использую библиотеку STB_Image, и мне кажется, что я правильно указываю к моему файлу (если я ошибаюсь в имени файла, я определенно получаю намного более быстрый ответ от моей программы).
И я реализовал печать, чтобы видеть, ловит ли он правильный файл, и он делает!
Мой код выглядит следующим образом, и мой результат - белый квадрат, который отображается в правильных координатах, но текстура не отображается, файл загружен правильно (с напечатанными правильными размерами), он просто не связывается или появляются на площади ...
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
int width, height, nrChannels;
unsigned char* data = stbi_load("test.jpg", &width, &height, &nrChannels, 0);
if (data == NULL) {
printf("Error in loading the image\n");
exit(1);
}
printf("Loaded image with a width of %dpx, a height of %dpx and %d channels\n", width, height, nrChannels);
unsigned int texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glVertex2f(2.0, 1.0);
glTexCoord2f(2.0, 1.0);
glVertex2f(8.0, 1.0);
glTexCoord2f(8.0, 1.0);
glVertex2f(8.0, 7.0);
glTexCoord2f(8.0, 7.0);
glVertex2f(2.0, 7.0);
glTexCoord2f(2.0, 7.0);
glEnd();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
if (data)
{
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
}
else
{
std::cout << "Failed to load texture" << std::endl;
}
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
Есть идеи?