0
我嘗試開發一個交換像素(相機預覽)底部< =>頂部的android應用程序。 swap diagramOpenGL ES交換像素
所以我寫了這個頂點着色器,但它顯示非常奇怪的東西(一個數字噪聲的黑屏)。
attribute vec4 vPosition;
attribute vec2 inputTextureCoordinate;
varying vec2 textureCoordinate;
void main()
{
if (vPosition.y > 0.0)
{
gl_Position = vPosition - vec4(0.0, 1.0, 0.0, 0.0);
}
else
{
gl_Position = vPosition + vec4(0.0, 1.0, 0.0, 0.0);
}
textureCoordinate = inputTextureCoordinate;
}
但是,這個頂點着色器下面的作品,但它只能將頂部像素移動到底部。
attribute vec4 vPosition;
attribute vec2 inputTextureCoordinate;
varying vec2 textureCoordinate;
void main()
{
if (vPosition.y > 0.0)
{
gl_Position = vPosition - vec4(0.0, 1.0, 0.0, 0.0);
}
else
{
gl_Position = vPosition;
}
textureCoordinate = inputTextureCoordinate;
}
你知道如何交換我的圖中的像素(使我的第一個頂點着色器工作)? 謝謝
我第二。您需要交換紋理座標,而不是頂點位置。你在屏幕上看到垃圾的原因是你將某些頂點從屏幕上移開。 –
謝謝! 但在片段着色器?因爲我認爲我必須避免在片段着色器中運行處理,因爲在交換之後,我必須放大圖像的一部分... 您是否認爲可以在頂點着色器中執行所有操作? – far38
可以在分段或頂點着色器中進行交換和縮放。使用輸入制服來定義您的縮放(min_u,max_u,min_v,max_v)。然後在頂點着色器中分配(min_u,max_v),左上(min_u,min_v),右上(max_u,min_v),右下(max_u,max_v)的左底部頂點紋理座標。紋理座標需要變化。這樣你會完成這兩個。在頂點着色器中縮放和交換。 – plastique