簡體   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