我想調試我的gbuffer framebuffer。我設法輕鬆地對RGB組件進行blit處理,但我想將alpha重新映射爲紅色或rgb以實現灰度,這樣我就可以調試alpha組件,而無需混合。有沒有辦法做到這一點?提前致謝!OPENGL:我怎樣才能移動alpha到紅色通道使用blit
回答
如果您只是想按原樣顯示單個顏色通道,那麼glColorMask
應該足夠了。
如果您只想顯示紅色通道,你可以這樣做:
glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE);
如果你想切換2個顏色通道或應用灰階效果,然後運行它都通過着色器可能是最容易方法:
uniform sampler2D frame;
in vec2 uv;
out vec4 fragColor;
void main()
{
vec4 color = texture(frame, uv);
// Grayscale
color.rgb = vec3((color.r + color.g + color.b) * 0.33);
// Switch red and alpha channels
color.ra = color.ar;
fragColor = color;
}
所以instread塊傳輸的幀緩衝區的,你畫一個全屏四與幀緩衝作爲約束質感。
謝謝,Vallentin!雖然沒有其他方法可以互換頻道嗎?如果可能,我想盡量減少開銷,我覺得使用命令會更好。 –
@KarimAbdelHamid據我所知,沒有。 blitting可以更快,但也比繪製全屏四元組慢。所以通常你會做得更好。底線是,如果它成爲和實際的性能問題,但總是基準。 – Vallentin
決定去四路線。謝謝! –
- 1. 我怎樣才能找到紅寶石
- 2. 我怎樣才能改變我的div與紅色的顏色
- 3. 使用MATLAB,我怎樣才能找到移動平均線?
- 4. 我怎樣才能自動使用mstest?
- 5. 我怎樣才能得到
- 6. 我怎樣才能得到
- 7. 我怎樣才能從上到下垂直移動我的UIImage
- 8. 我怎樣才能移動圖像以毫秒字使用C#
- 9. OpenGL着色器中的Alpha通道
- 10. ?我怎樣才能從雙軌道上
- 11. 我怎樣才能使PHP
- 12. 我怎樣才能到我的用戶
- 13. 我怎樣才能使它動態
- 14. 我怎樣才能
- 15. 我怎樣才能
- 16. 我怎樣才能
- 17. 我怎樣才能
- 18. 我怎樣才能一起使用gtk3和opengl?
- 19. 我怎樣才能移動到另一個的UIViewController programaticlly
- 20. 我怎樣才能逃避紅寶石數據庫通配符?
- 21. Rails-我怎樣才能使用簡單的紅寶石類?
- 22. 我怎樣才能用ajax
- 23. 我怎樣才能用jQuery
- 24. 怎樣才能通過使用組由
- 25. 我怎樣才能得到用戶
- 26. 我怎樣才能通過隨機
- 27. 我怎樣才能通過零
- 28. 我怎樣才能通過Java
- 29. 我怎樣才能從Swing溝通Servlet
- 30. 我怎樣才能通過CGLIB
有沒有理由不能只讀阿爾法? –
@Nicol我的問題是關於將alpha移動到不同的頻道。如果你有RGB的值,那麼使用alpha通道也會使它變得無法辨認。 –