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 '