为什么我的2D OpenGL纹理无法正确加载? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的2D OpenGL纹理无法正确加载? [关闭]相关的知识,希望对你有一定的参考价值。

我正在制作游戏引擎,但遇到了渲染问题。当我运行程序时,加载的2D纹理是空白的,只是黑色。

我正在使用stb_image.h加载我的文件,并使用OpenGL进行渲染。由于这是游戏引擎的一部分,因此有大量代码,因此我附上了github链接和所涉及文件的列表。

https://github.com/Tefowen/Steel

文件:

SandBoxApp.cpp (in Sandbox project) OpenGLTexture.cpp and .h (in Steel/Platform/OpenGL) Texture.cpp and .h (in Steel/Renderer) Checkerboard.png (in Sandbox/assets/textures)

答案
在Steel / src / Platform / OpenGL / OpenGLTexture.cpp ln 22-28中,您具有:

glCreateTextures(GL_TEXTURE_2D, 1, &m_RendererID); glTextureStorage2D(m_RendererID, 1, GL_RGB8, m_Width, m_Height); glTextureParameteri(m_RendererID, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTextureParameteri(m_RendererID, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTextureSubImage2D(m_RendererID, 0, 0, 0, m_Width, m_Height, GL_RGB, GL_UNSIGNED_BYTE, data);

但是您永远不会束缚您的纹理。尝试使用:

glCreateTextures(GL_TEXTURE_2D, 1, &m_RendererID); glBindTexture(GL_TEXTURE_2D, m_RendererID); glTextureStorage2D(m_RendererID, 1, GL_RGB8, m_Width, m_Height);

将来,请根据建议的@ 1201ProgramAlarm制作一个最小的可复制示例。

以上是关于为什么我的2D OpenGL纹理无法正确加载? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL绑定几个2D纹理

OpenGL着色器没有传递正确的纹理坐标

如何在 1D 缓冲区中生成 2D 纹理并将其加载到 OpenGL 中?

OpenGL SOIL - 加载纹理失败

OpenGL、GLSL 片段着色器无法读取 Sampler2D 纹理

如何将 UV 纹理从搅拌机加载到 opengl android java