繁体   English   中英

GLSL 将纹理渲染为黑色和蓝色

[英]GLSL renders texture as black and blue

我正在尝试使用 openGL 和 GLSL 渲染纹理。 纹理应该在浮动立方体上渲染。

质地: http : //imgur.com/Actqtx1

结果: http : //imgur.com/MXIOEvS

立方体是蓝色和黑色的奇怪组合。 即使我尝试其他纹理,结果也是一样的。 在上面的屏幕截图中,我使用“fract(worldspace”) 渲染了一个平面,以确保着色器正常工作。

很明显,“color = texture(myTextureSampler, UV).rgb;” 产生错误的颜色,但我不知道为什么。 纹理坐标和纹理数据似乎被正确读取和缓冲。

有没有人见过这种效果? 有谁知道我的问题可能出在哪里? 我可以根据要求提供代码片段。

你看错了方向。 不是你的着色器有问题(也许是)。 您的问题在纹理加载过程中更早开始。

您会看到您的纹理似乎奇怪地倾斜了。 如果在调用 glTexImage 之前没有正确设置对齐和像素行步长,通常会发生这种情况,请参阅glPixelStorei(GL_UNPACK_…,)参数。

我看到的另一个问题是,您加载到 OpenGL 中的任何内容都与您的原始图片没有任何相似之处。 它看起来像位噪声。 这告诉我,您可能正在向 OpenGL 提供一些压缩数据,甚至可能是图片文件。

OpenGL 不知道如何处理图像文件格式。 它知道一些特殊的压缩格式,但这些是 GPU 用来降低内存带宽要求的压缩格式,而不是像 PNG 或 JPEG 这样的压缩格式。

如果您手头没有一种特殊的纹理压缩格式,OpenGL 需要一个原始像素数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM