如何在片段/顶点着色器中将行主要更改为列主要,反之亦然?

时间:2018-02-17 12:26:40

标签: opengl-es webgl shader

我有一个像素数组,这些像素是行主要或列主要,具体取决于配置,在接收之前我没有任何句柄。

所以,对我来说,转换javascript代码很容易,但我对如何在OpenGL着色器中移动它没有任何想法。

以下是要转移的javascript代码:

var MBytes = new Uint16Array(rows*cols);
var k = 0;
var p = 0;
var pos = 0;
for(var i=0;i<rows;i=i+1){
    k = i*cols;
    p = i;
    for(var j=0;j<cols;j=j+1){
        pos = k + j;
        MBytes[pos] = incomingPixels[p];
        p = p + rows;
    }
}

1 个答案:

答案 0 :(得分:0)

如果可以避免,请不要旋转实际的像素数据 - 这非常昂贵。只需更改纹理坐标,即可旋转逻辑访问。

通常,OpenGL ES纹理坐标左下角为0,0,右上角为1,1。我是否需要在屏幕上向左旋转90度,然后在坐标空间中向右旋转90度(因此应用程序的左上角为0,0,这将显示在屏幕的左下角)。

如果您还需要对Y-flip进行编码,则只需交换Y坐标。