我想在不使用GLUT的情况下以独立于平台的方式使用深度缓冲区初始化OpenGL。
如何使用c#wrapper删除OpenGL场景中的隐藏曲面。 我没有使用GLUT所以我不能使用glutInitDisplayMode。 任何想法?
更多详情:
我找到了关于隐藏表面移除的这些步骤:
通过glutInitDisplayMode请求z-buffer:
// GLUT_DEPTH to request for depth-buffer
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
启用z-buffer进行深度测试:
glEnable(GL_DEPTH_TEST);
清除颜色缓冲区时清除z缓冲区:
// Clear color and depth buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
据我所知,glutInitDisplayMode是GLUT函数之一。 我可以消除这个电话没有不良影响。 如果没有,那么替代纯粹的opengl调用是什么呢。
我正在使用(Colin P. Fahey)
编写的c#包装器答案 0 :(得分:2)
GLUT不是OpenGL!
无论GLUT做什么,你的C#包装器也可能提供它,也许更好。您需要的是深度缓冲并启用深度测试。
获取深度缓冲区所需的确切步骤完全取决于您使用的包装器。因此,告诉我们哪个包装器是必不可少的。
答案 1 :(得分:0)
OpenGL是一个与平台无关的渲染API。为窗口系统创建OpenGL上下文是窗口系统界面的工作(例如,WGL)。
根据您正在使用的C#绑定,您可能有直接的wgl或glx调用或类似GLUT的平台窗口调用(在OpenTK的情况下就像这样)。如果您告诉我们您使用的绑定,我可以提供更多信息。
答案 2 :(得分:0)
您是否考虑过使用不那么奇怪的界面?古怪的?我全都是为了寻找随机人写的不同而有趣的工具,但这些文档非常糟糕。
我查看了它,看来它的InitializeOpenGL命令不允许你为GL初始化设置任何参数。完全没有。这意味着你几乎受到控制的支配。
现在,可能默认会给你一个深度缓冲区(坦率地说,如果没有,那么它就完全没用了,你应该立即放弃它)。但由于没有办法告诉它你想用你的缓冲区做什么,你无法做到确保它。
就个人而言,我建议你放弃这个工具并使用更像OpenTK这样的主流。当然,OpenTK的稳定发布是相当古老的,但它仍然比你现在使用的更好。