Anonymous
Opengl отображает текстуру ненормально
Сообщение
Anonymous » 26 дек 2024, 10:16
Я попробовал пример рендеринга текстуры куба OpenGL. Но текстура отображалась ненормально.
но исходное изображение ниже:
Код :
Код: Выделить всё
app::Shader cube_shader{ "Cube" };
float vertices[] = {
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
... ...
};
unsigned int cube_VAO, cube_VBO, cube_texture;
//vao,vbo id generate and bind buffer data code
...
glGenTextures(1, &cube_texture);
glBindTexture(GL_TEXTURE_2D, cube_texture);
...
unsigned char* data = stbi_load(pic_path.c_str(), &width, &height, &nrChannels, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
glGenerateMipmap(GL_TEXTURE_2D);
cube_shader.load();
cube_shader.setInt("texture1", 0);
//event loop code
glClearColor(0.3f, 0.3f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, cube_texture);
cube_shader.load();
//set the model,view, projection matrix
...
glBindVertexArray(cube_VAO);
glDrawArrays(GL_TRIANGLES, 0, 36);
glfwSwapBuffers(mainWindow);
glfwPollEvents();
Код вершинного шейдера:
Код: Выделить всё
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoord;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
out vec2 TexCoord;
void main()
{
gl_Position = projection * view * model*vec4(aPos, 1.0);
//gl_Position = vec4(aPos, 1.0);
TexCoord = vec2(aTexCoord.x, aTexCoord.y);
}
код фрагментного шейдера:
Код: Выделить всё
#version 330 core
out vec4 FragColor;
in vec2 TexCoord;
uniform sampler2D texture1;
void main()
{
FragColor = texture(texture1, TexCoord);
}
Текстура, использующая картинку, не отображается нормально, так почему же в коде есть ошибки?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... e-unnormal
1735197374
Anonymous
Я попробовал пример рендеринга текстуры куба OpenGL. Но текстура отображалась ненормально. но исходное изображение ниже: Код : [code]app::Shader cube_shader{ "Cube" }; float vertices[] = { -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, ... ... }; unsigned int cube_VAO, cube_VBO, cube_texture; //vao,vbo id generate and bind buffer data code ... glGenTextures(1, &cube_texture); glBindTexture(GL_TEXTURE_2D, cube_texture); ... unsigned char* data = stbi_load(pic_path.c_str(), &width, &height, &nrChannels, 0); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); glGenerateMipmap(GL_TEXTURE_2D); cube_shader.load(); cube_shader.setInt("texture1", 0); //event loop code glClearColor(0.3f, 0.3f, 0.1f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, cube_texture); cube_shader.load(); //set the model,view, projection matrix ... glBindVertexArray(cube_VAO); glDrawArrays(GL_TRIANGLES, 0, 36); glfwSwapBuffers(mainWindow); glfwPollEvents(); [/code] Код вершинного шейдера: [code]#version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; uniform mat4 model; uniform mat4 view; uniform mat4 projection; out vec2 TexCoord; void main() { gl_Position = projection * view * model*vec4(aPos, 1.0); //gl_Position = vec4(aPos, 1.0); TexCoord = vec2(aTexCoord.x, aTexCoord.y); } [/code] код фрагментного шейдера: [code]#version 330 core out vec4 FragColor; in vec2 TexCoord; uniform sampler2D texture1; void main() { FragColor = texture(texture1, TexCoord); } [/code] Текстура, использующая картинку, не отображается нормально, так почему же в коде есть ошибки? Подробнее здесь: [url]https://stackoverflow.com/questions/79308903/opengl-render-texture-unnormal[/url]