使用LWJGL而不会进行太多的JNI调用

时间:2012-05-01 10:12:32

标签: java c jogl lwjgl

我想用LWJGL绘制一个模型,我知道在调用每个glVertex方法时,会发生JNI调用,这非常耗时。由于我在模型中有模型,我想只使用一个JNI调用(向LWJGL库添加本机方法),在本机端,从文件中获取模型顶点(使用c语言)并将它们全部绘制(避免每个顶点调用JNI)。 所以,我想更改LWJGL库源并添加一个函数来执行此操作。 我的问题是,LWJGLJOGLopenGL的任何可能的Java绑定中是否提供此功能?

2 个答案:

答案 0 :(得分:3)

使用“顶点缓冲区对象”存储顶点数据,并调用绘制尽可能多的顶点/三角形,只需调用glDrawArraysglDrawElements或类似内容即可。

This page解释了如何在LWJGL中使用它们。

请注意,OpenGL文档的LWJGL版本相当缺乏。检查OpenGL official site以获取能够很好地解释其功能的C版本。

答案 1 :(得分:1)

你可以使用OpenGL glVertexPointer函数,它在LWJGL中被glVertexPointer (link)包裹。

BUT!

如果您担心仅仅是JNI呼叫的速度,那么为什么不重新考虑在c / c ++中这样做呢?

稍后编辑:documentation for glVertexPointer