我是OpenGL的新手,我在2D中制作游戏,我希望相机能够跟随角色。如何在OpenGL中移动2D相机
我开始用gluLookAt(),但我看我可以只动矩阵glTranslatef()函数,它应该做的伎俩。
的问题是,相机仅移动第一次被创建,但如果我增加了X位置和Y位置它不工作。我做错了什么?我有不正确的概念?
我试图将其更改为GL_PROJECTION,GL_MODELVIEW,和GL_TEXTURE,
如果我做它GL_PROJECTION所有项目都消失了(由于这个问题答案的链接我明白,我不能把这种方式)
如果我在GL_TEXTURE上做的所有纹理开始滚动(但这不是我想要的
如果我在GL_MODELVIEW上做,只是没有发生所有项目都在同一个站点,但如果我退出gl.glMatrixMode (GL10.GL_MODELVIEW)line translatef它移动相机的第一个迭代,然后停止做它,因为l AST对象是GL10.GL_MODELVIEW
是在不同的矩阵状态开始? 这是如何似乎随着X = 0和Y的缩写值= 0
这是如何似乎随着X的缩写值= -2和Y = -2和消除gl.glMatrixMode(GL10.GL_MODELVIEW )(如果我不elimiate这条线,这似乎是第一个即使有值-2)
在两种情况下,相机犯规举动,仅仅停留在那个位置
我的渲染代码:
@Override
public void onDrawFrame(GL10 gl)
{
loopStart = System.currentTimeMillis();
try
{
if (loopRunTime < SEngine.GAME_THREAD_FPS_SLEEP)
{
Thread.sleep(SEngine.GAME_THREAD_FPS_SLEEP - loopRunTime);
}
} catch (InterruptedException e)
{
}
deltaTime = (float) ((System.currentTimeMillis() - aRestar)/1000f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glClearColor((78.0f/255.0f), (192.0f/255.0f), (203.0f/255.0f), 0.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glTranslatef(x, y, 0f);
perro.move(gl);
moversetas(gl);
palmera.draw(gl);
comprobacionesColision();
actualizar(deltaTime);
x +=0.05f;
y +=0.05f;
loopEnd = System.currentTimeMillis();
loopRunTime = ((loopEnd - loopStart));
}
我不会使用的glTranslatef类型的功能,而使用着色器 – 2014-11-24 12:49:07
只是好奇..为什么不建议你学会了opengl es 2.0吗? – FaNaT 2014-11-24 16:23:22
我没有找到任何学习openGL es 2.0的好的指南,如果你知道任何人,并可以给我一个链接,那将是太棒了! – D4rWiNS 2014-11-25 00:04:58