作者chrisho (sudoku)
看板GameDesign
标题[程式] Android开发opengl UV贴图会怪?
时间Tue Oct 25 13:09:01 2011
目前在使用 OpenGL 想移植以前写在 SurfaceView 的游戏, 有些地方有问题:
装置是 defy cm7 2.3.7
Android 搭配 OpenGL 秀图,使用Vertex array drawing(没有frame buffer)
如果一张图要用uv移位来存取 texture 的某一区域, 会受到 GLU.gluOrtho2D
的影响吗? 例如 我要从 x=1,y=1 取 32x32 的大小, 秀在某些位置(不一定)
会出现不是想要的结果(变成 x=1,y=0,取32x32的大小)
图1:
http://i1105.photobucket.com/albums/h355/ch_mac/device_str5.png
右边那块超长由上画到下的是只有 32x1 的大小, 从0画到480,
结果不是图2这样 :
图2:
http://i1105.photobucket.com/albums/h355/ch_mac/device_str6.png
用 SurfaceView 则正常..
不知是哪里有问题,
stackoverflow 全文 :
http://bit.ly/s6JdNh
OnSurfaceChanged 的程式码 :
//抓得到 w=854,h=480
gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
//如果不设定这两行, 画面会很小(原本就只绘制480x320)
w=480;
h=320;
GLU.gluOrtho2D(gl,0, w, h, 0);
//本来想用 glScalef 来调整画面比例去缩放, 好像在某些倍率有破碎情况
//ex:贴图边缘各有 1 像素不定位的出现误差(如图1).
float ratio_w=1.0f;
float ratio_h=1.0f;
ratio_w=1.78f;
ratio_h=1.5f;
//gl.glScalef(ratio_w, ratio_h, 0f);
Log.d(TAG,"changed in:"+w+","+h+","+aspect_w);
// Select the modelview matrix
gl.glMatrixMode(GL10.GL_MODELVIEW);
// Reset the modelview matrix
gl.glLoadIdentity();
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.74.126.198