我最近开始在我们的Java应用程序环境中使用API,它使用JOGL(使用Java可访问OpenGL命令)在我们的应用程序中创建一个3D环境(所以我对OpenGL很新)。
此API使用显示列表对命令进行分组和加速以显示几何组件。到目前为止,在显示方法中,首先应用鼠标对场景的所有更改(缩放,旋转,平移),然后调用当前显示列表。 API提供了各种场景元素(表面,光线,变换),这些元素被放入树状结构中。这种结构决定了这些场景元素的执行顺序"后来。然后将场景树的执行放入显示列表中。这可以按预期工作。
我现在想要添加的是一个小坐标系,作为组件当前方向的表示。这将是要添加到场景树的新场景元素。 这个坐标系显然应该受到鼠标旋转的影响,但不应该缩放或转换到其他地方。
我的问题是:由于鼠标移动是在执行场景树之外应用的,我不知道如何将仅旋转应用于仅限某个场景树的元素。我不能仅仅在显示列表的相应部分中恢复鼠标移动(在我的理解中),因为这意味着显示列表必须采用鼠标位置变化的参数。但我无法处理显示列表中的参数,因为它们的状态是一次确定的,然后只在这种状态下执行(正确吗?)。我不能重置投影矩阵,因为我会失去旋转状态。
我希望我的问题是可以理解的。有没有办法用显示列表执行此操作,或者我是否可能需要替换此API中的显示列表?无论如何,它们似乎都不值得推荐。