0
因此,我正在製作一個應用程序,您可以點擊屏幕並快速創建對象。我應該如何去做這件事?我創建了一個獨立的類,它包含要創建的對象的屬性,用於呈現每個特定形狀的類以及用於以前類的抽象類。但基本上我只是想能夠點擊一個特定的點,並呈現以該點爲中心的指定形狀。如何在opengl es 2.0中快速渲染對象
因此,我正在製作一個應用程序,您可以點擊屏幕並快速創建對象。我應該如何去做這件事?我創建了一個獨立的類,它包含要創建的對象的屬性,用於呈現每個特定形狀的類以及用於以前類的抽象類。但基本上我只是想能夠點擊一個特定的點,並呈現以該點爲中心的指定形狀。如何在opengl es 2.0中快速渲染對象
首先,讓您的活動實施OnTouchListener並重寫folllowing方法,你可以檢索觸摸座標:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
touchX = (int) event.getX();
touchY = (int) event.getY();
}
return true;
}
觸摸事件,然後你可以打電話給你的方法繪製所需的形狀傳球touchX和touchY值並進行翻譯。
好的,謝謝,但我主要想知道爲了渲染單獨的類中的對象,我需要創建哪種緩衝區或着色器。像我可以從我的主要活動中回收什麼東西,以及我需要創建新的東西? – scssquatch
在您的活動中,只需創建一個實現** GLSurfaceView.Renderer **的內部類。管理所有的着色器手柄,矩陣等,然後傳遞想要呈現的形狀。您可以爲形狀類自己的形狀保存緩衝區(positionBuffer,colorBuffer,texCoordBuffer,normalBuffer)。 – baeschti
如果有人想知道完整的答案,我想清楚了。你必須傳遞位置和顏色句柄,設置位置,創建一個vertexAtrribPointer,設置glEnableVertexAttribAarray,設置顏色位置,像attrib數組一樣爲顏色執行上述操作。然後使用glDrawArrays或元素繪製對象。我還必須從頂點創建一個字節緩衝區,並將它們放在0的位置。 – scssquatch