Java类占位符(不同设备上的OpenGL)
我想在我的应用程序中使用不同的openGL环境 我正在开发一个游戏应用程序,但在windows上进行测试,因为它更容易运行。我使用GL2操作windows,GLES操作android。我的想法是限制平台对某些文件的依赖性,这些文件将充当“接口”。根据代码的其余部分,我将使用这些类。我将只使用两个库中存在的GL2和GLES函数 请注意,GL2本身就是一个接口,可以由不同的类实现 我的第一个猜测是简单地创建一个与GL2相等的接口(PlatformGL),并将GL2转换到它。PlatformGL的定义将在一个文件中,该文件存在于每个平台的一个版本中,但它不会将收到的GL2强制转换为PlatformGL:Java类占位符(不同设备上的OpenGL),java,class,opengl,interface,Java,Class,Opengl,Interface,我想在我的应用程序中使用不同的openGL环境 我正在开发一个游戏应用程序,但在windows上进行测试,因为它更容易运行。我使用GL2操作windows,GLES操作android。我的想法是限制平台对某些文件的依赖性,这些文件将充当“接口”。根据代码的其余部分,我将使用这些类。我将只使用两个库中存在的GL2和GLES函数 请注意,GL2本身就是一个接口,可以由不同的类实现 我的第一个猜测是简单地创建一个与GL2相等的接口(PlatformGL),并将GL2转换到它。PlatformGL的定义
public interface PlatformGL extends GL2{
}
或直接基于GL2的实施(非首选):
在这两种情况下,我得到:
java.lang.ClassCastException: jogamp.opengl.gl4.GL4bcImpl cannot be cast to [...].PlatformGL
一种选择是构建一个新类,将所有函数调用传递给它的底层GL,但是GL有很多函数和变量,我不想把它们全部写下来。它可能是最干净的版本,因为一些具有不同名称约定的函数可以传递给正确的函数
除了使用预处理器替换类名之外,您还有其他想法吗
java中是否有用于存储类的类?差不多
<class> mygl = GLES;
[...]
mygl gl = (mygl) getGL();
gl.glEnable(mygl.GL_DEPTH_BUFFER_BIT);
mygl=GLES;
[...]
mygl=(mygl)getGL();
gl.glEnable(mygl.gl\u深度\u缓冲\u位);
我希望你能想到如何做到这一点。我知道这并不能回答你的问题,但如果你想编写一次OpenGL,并让它在Windows和Android上运行,那么LibGDX非常好。他们编写自己的GL10(以及GL11、GL20)接口,然后为每个平台实现该接口。
<class> mygl = GLES;
[...]
mygl gl = (mygl) getGL();
gl.glEnable(mygl.GL_DEPTH_BUFFER_BIT);