1. 程式人生 > >opengl es 渲染方式與 紋理座標設定 ,OpenGL ES 模型檢視之縮放操作

opengl es 渲染方式與 紋理座標設定 ,OpenGL ES 模型檢視之縮放操作

OpenGl ES關於渲染方式有以下兩種:

RENDERMODE_CONTINUOUSLY和RENDERMODE_WHEN_DIRTY。

預設渲染方式為RENDERMODE_CONTINUOUSLY,這兩種渲染的含義是:

RENDERMODE_CONTINUOUSLY:渲染器會不停地渲染場景,

RENDERMODE_WHEN_DIRTY:只有在建立和呼叫requestRender()時才會重新整理。

setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);//設定渲染模式為主動渲染  

一般設定為RENDERMODE_WHEN_DIRTY方式,這樣不會讓CPU一直處於高速運轉狀態,提高手機電池使用時間和軟體整體效能。

android平臺下Opengl紋理系統座標,左上角為原點。

左上角(0,0),右上角(1.0),左下角(0,1),右下角(1,1)。


float[] textureCoords =
{
0.0f, 1.0f,  
1.0f, 1.0f,
0.0f, 0.0f,
1.0f, 0.0f
};

最簡捷的辦法是:用工具將圖片進行180度旋轉,這樣圖片就倒置了。可以節省資源,提高效率~

 對當前模型檢視進行縮放,在OpenGL ES 1.0中可以使用glScale*函式,而在2.0中需要自己設定縮放矩陣。

       如,分別使用sx,sy,sz表示在x,y,z軸上的縮放比例,那麼在1.0中可以這樣縮放模型檢視:

glScalef(sx, sy, sz);

       在2.0中你需要這麼做:

float scale[16] = {sx, 0, 0, 0,

                               0,  sy, 0, 0,

                               0,  0, sz, 0,

                               0,  0, 0, 1  };

glMultiMatrixf(scale);

       縮放矩陣的推導過程如下:

vS = (vx vy vz 1) = (vx*sx vy*sy vz*sz 1*1) = v '