使用SOIL加载OpenGl纹理时,纹理不会出现
texture doesnt appear when loading OpenGl texture using SOIL
我试图添加一个纹理到我的正方形显示在屏幕上,但在我做了所有的代码后,正方形仍然是白色的,我不能找出什么是错的,我想我可能错过了一些东西后,我已经加载了纹理。
这是我用来创建纹理的代码:void textureManager::createTexture(const char* fileName) {
GLuint textureID = SOIL_load_OGL_texture(fileName, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
if (0 == textureID) {
cout << "error" << endl;
}
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
}
我在顶点和索引缓冲区数据之后调用这个函数,在着色器编译之前
这是我的顶点和片段着色器代码:
#version 430
in layout(location = 0) vec2 position;
in layout(location = 1) vec2 texCoord;
out vec2 vertex_texCoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
vertex_texCoord = texCoord;
}
#version 430
out vec4 fragmentColor;
in vec2 vertex_texCoord;
uniform sampler2d textureSampler;
void main()
{
fragmentColor = texture(textureSampler, vertex_texCoord);
}
有人能帮帮我吗
你的着色器看起来很好。你也在制作GLuint id。嗯,你是在drawcall中把它发送给着色器吗?
应该是这样的:
glBindTexture(GL_TEXTURE_2D, textureID); //texture uniform
相关文章:
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- SFML纹理像播放器
- OpenGL大的3D纹理(>2GB)非常慢
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 着色器纹理值与创建纹理时写入的值不同
- OpenGL将纹理四边形渲染为(0,0)
- 宽度为奇数的16位纹理为片状
- 使用 CUDA 和纹理进行图像减法
- 在不使用统一的情况下将纹理传递给 GLSL 着色器?
- 将使用太多的纹理插值器 - 带旋转的着色器
- dx11 渲染到纹理仅显示透明颜色
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 如何使用 DXGI 格式DXGI_FORMAT_R1_UNORM创建 2D 纹理?
- 纹理单位重叠?渲染了错误的纹理
- SFML 纹理变换(放大)
- SDL2 二维纹理分配/池化
- OpenGL 3.3不会渲染任何纹理(黑色纹理、C++、GLFW/SOIL)
- 在 std::thread 中使用 SOIL 加载 OpenGL 纹理会引发"Integer Division by Zero"
- 使用SOIL加载OpenGl纹理时,纹理不会出现
- 纹理不能正确显示c++ opengl SOIL