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