我正在按照本教程将Opengl添加到我的Android应用中。 https://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html。在所有示例中,形状都是在MyGLRenderer构造函数中创建的,但我想知道如何在创建渲染器后动态添加Opengl形状。怎么办呢?
答案 0 :(得分:3)
您创建一个名为shape的接口或类。这将包含渲染3D形状(顶点,索引,颜色数据等)所需的数据。或者,VAO / VBO /纹理ID /用于渲染的其他ID。
使用类的优点是,您可以初始化方法并将所有内容保存在单个类中,同时保持扩展它的能力并创建更多类(多维数据集,金字塔等)来自定义对象。
创建课程后,您可以创建新的列表或地图:
public List<Shape> shapes = new ArrayList<>();
//add whatever shapes you want. Create them at runtime (generate)
// or keep them static. It is up to you
在您创建的这个类中,您还可以实现渲染方法。在那里你绘制对象。使用类的一个优点是可以将绘图添加到此类中。如果您没有在类中定义特定的绘制方法,则必须手动绘制主渲染方法中的每个对象。
答案 1 :(得分:1)
导出三角形,四边形,圆形等。从定义draw()
方法的“形状”界面。 http://tutorials.jenkov.com/java/interfaces.html
然后创建一个List并根据需要将形状推入和移出它。 http://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples
在onDrawFrame(GL10 gl)
方法中,循环遍历形状列表。
for( Shape s : shapeList ) s.draw(gl);
另外,可能应该将Shape位置添加到glTranslate
调用