我是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