2014-11-24 84 views
0

我是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 enter image description here

這是如何似乎隨着X的縮寫值= -2和Y = -2和消除gl.glMatrixMode(GL10.GL_MODELVIEW )(如果我不elimiate這條線,這似乎是第一個即使有值-2)

enter image description here

在兩種情況下,相機犯規舉動,僅僅停留在那個位置

我的渲​​染代碼:

@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)); 

} 
+0

我不會使用的glTranslatef類型的功能,而使用着色器 – 2014-11-24 12:49:07

+1

只是好奇..爲什麼不建議你學會了opengl es 2.0嗎? – FaNaT 2014-11-24 16:23:22

+0

我沒有找到任何學習openGL es 2.0的好的指南,如果你知道任何人,並可以給我一個鏈接,那將是太棒了! – D4rWiNS 2014-11-25 00:04:58

回答

1

好了很多的嘗試後,我成功了,我史迪威不知道這是否是實現這一目標的最佳途徑,如果有人可以解釋爲什麼這是一個解決方案,將是不錯的!

我只是改變了矩陣模式GL_PROJECTION和翻譯,而不是它

gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glLoadIdentity(); 
    gl.glOrthof(0f, 8f, 0f, 4f, -1f, 1f); 
    gl.glTranslatef(x, y, 0f); 

gl.glMatrixMode(GL10.GL_MODELVIEW); 
gl.glTranslatef(x, y, 0f); 
0

矩陣是棘手的工作。你有什麼關於如何與一個合作的知識? 另外,0.05f的增量非常小,你嘗試過更大的步驟嗎?其餘的代碼對我來說似乎很好。 此外,你在GL_PROJECTION或GL_MODELVIEW?看看這個:https://gamedev.stackexchange.com/questions/56512/how-do-i-position-a-2d-camera-in-opengl只需看看底部的答案。

+1

我有這麼基本的知識,我試圖將其更改爲GL_PROJECTION,GL_MODELVIEW,和GL_TEXTURE, 的問題是不斷變化的矩陣模型 感謝您的鏈接的結果,它是如此有用 – D4rWiNS 2014-11-24 12:52:28

+1

更新它也通常是一個首先繪製/激活的特定順序;其中一個關於遊戲編程的棘手問題:] 另外,您的相機的旋轉矩陣設置是否正確?你確定它正在看角色嗎? – Zubaja 2014-11-24 13:04:35

+0

你的意思是你的相機的旋轉矩陣設置?,實際上是不看字符,只是試圖移動相機(但它不動),順序應該罰款,因爲第一次迭代工作 – D4rWiNS 2014-11-24 13:11:05