0
A
回答
2
我能想到兩個概念的解決方案:
限制TEX-COORDS永遠不會從這項工作將合併不必要的「邊界」像素的任何位置進行採樣。這可以通過將tex座標系夾緊到中心來完成。
a)通過直接修改tex-coords。這將不需要對着色器進行任何修改(並且可以與固定功能管線一起使用)。但是,這意味着您將失去一個像素精確的映射並在水平和垂直方向上丟失一個像素。
b)通過在着色器中對紋理進行採樣之前直接夾取texcoords。這要求着色器可以使用可用範圍的信息。但是,如圖所示,在軸對齊的矩形的情況下,這可以用vec4表示。由於這是紋理的屬性,因此使用制服似乎是合適的。也許你甚至可以在着色器中使用常量。
「修復」採樣後的值。現在這聽起來像是一個複雜而困難的操作,但實際上,這很容易完成。你需要一個額外的遮罩,在你的紋理有效的地方是1,而在黑色邊框是0的地方。如果您最多隻使用3個通道,則可以簡單地將其添加爲第四個紋理通道。否則,您可能需要額外的紋理(使用相同的過濾器設置)。這也要求紋理中的「不需要」的數據總是黑色的,所以對插值貢獻0。在這種情況下,需要進行0/1-掩模的樣品,可以用它來重新歸一化acutal顏色的樣品簡單地通過
vec4 color = texture(samplerColor, texCoord); float mask = texture(samplerMask, texCoord).r; // or mask = color.a vec4 fixed_folor = color/mask;
這甚至與像紋理映射和各向異性過濾更復雜的過濾器的工作原理。
相關問題
- 1. 的OpenGL - 掩模具有多個紋理
- 2. OpenGL ES的紋理掩蔽煥發glTexEnvi
- 3. 的OpenGL紋理查找錯誤
- 4. OpenGL紋理管理
- 5. opengl vbo紋理
- 6. OpenGL紋理
- 7. 紋理openGl。 qt
- 8. OpenGL紋理不
- 9. OpenGl - 紋理glutSolidSphere?
- 10. opengl多紋理
- 11. C#opengl紋理
- 12. opengl紋理
- 13. XNA HLSL紋理掩蔽效應不使用阿爾法掩碼
- 14. C++ OpenGL紋理,找不到圖像
- 15. 袋子紋理OpenGL
- 16. FFMPEG到OpenGL紋理
- 17. OpenGL紋理映射
- 18. 全局OpenGL紋理
- 19. OpenGL渲染紋理
- 20. OpenGL紋理映射
- 21. Opengl視頻紋理
- 22. OpenGL:紋理反饋?
- 23. Opengl:地球紋理
- 24. OpenGL紋理vs FBO
- 25. OpenGL紋理轉換
- 26. 紋理Opengl地形?
- 27. OpenGL ES 2.0紋理
- 28. OpenGL紋理垃圾
- 29. OpenGL紋理模糊
- 30. OpenGL - 紋理太多