C# 使用深度缓冲和深度测试初始化OpenGL
我希望在不使用GLUT的情况下,以独立于平台的方式使用深度缓冲区初始化OpenGL 如何使用c#包装器移除OpenGL场景中的隐藏曲面。 我没有使用GLUT,因此无法使用glutInitDisplayMode。 有什么想法吗C# 使用深度缓冲和深度测试初始化OpenGL,c#,opengl,C#,Opengl,我希望在不使用GLUT的情况下,以独立于平台的方式使用深度缓冲区初始化OpenGL 如何使用c#包装器移除OpenGL场景中的隐藏曲面。 我没有使用GLUT,因此无法使用glutInitDisplayMode。 有什么想法吗 有关详细信息: 我发现了以下关于删除隐藏曲面的步骤: 通过glutInitDisplayMode请求z缓冲区: // GLUT_DEPTH to request for depth-buffer glutInitDisplayMode(GLUT_RGBA | GLUT_D
有关详细信息: 我发现了以下关于删除隐藏曲面的步骤:
// GLUT_DEPTH to request for depth-buffer
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glEnable(GL_DEPTH_TEST);
// Clear color and depth buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
反映问题编辑的更新
获取深度缓冲区的确切步骤完全取决于您使用的包装器。因此,有必要告诉我们它是哪种包装器。OpenGL是一种平台无关的渲染API。为窗口系统创建OpenGL上下文是窗口系统接口的工作(例如,)
根据您使用的C#绑定的不同,您可能会有直接的wgl或glx调用,或者类似GLUT的平台独立的窗口调用集(在示例中就是这样)。如果您让我们知道您使用的绑定,我可以提供更多信息。您是否考虑过使用一个不太合适的接口。。。怪人?我完全支持寻找由随机人编写的不同且有趣的工具,但这些文档非常糟糕 我查看了它,它的initializepengl命令似乎不允许您为GL初始化设置任何参数。完全这意味着你几乎要受控制的摆布 现在,默认情况下,它可能会给你一个深度缓冲区(坦率地说,如果没有,那么它完全没有价值,你应该立即放弃它,如果不是更早的话)。但是,由于没有办法告诉它您想用缓冲区做什么,所以您无法确保它
就个人而言,我建议你放弃这个工具,使用一些更主流的工具,比如。诚然,OpenTK的稳定版本非常古老,但它仍然比您现在使用的要好。我知道“GLUT不是OpenGL”,但我在许多OpenGL网站上发现了以下步骤:1-通过glutInitDisplayMode请求z缓冲区:glutInitDisplayMode(GLUT|RGBA | GLUT|DOUBLE | GLUT|深度)//GLUT_深度请求深度缓冲区2-启用z缓冲区进行深度测试:glEnable(GL_深度_测试);3-清除颜色缓冲区时清除z缓冲区:glClear(GL_颜色_缓冲区_位| GL_深度_缓冲区_位);因此,我想问的是如何用纯opengl调用替换第一步。@rami:你应该用良好的格式将其添加到你的问题中。如果你不告诉我们你正在使用什么来初始化opengl,你的问题就无法得到回答。你是直接打电话给WGL,还是使用一些库,还是什么?我已经把它添加到了我的问题中。我正在使用一个由(Colin P.Fahey)oddball编写的c#wrapper!!!?Esri ArcGis Globe演示示例使用了它!我不认为Esri选择了一个糟糕的库。无论如何,谢谢你的建议,我会测试它。@rami:我以前从未听说过Esri或ArcGis。然而,正如我所说,你是在你的工具的摆布。它不允许您请求深度缓冲区。因此,是否获得深度缓冲区完全取决于工具是否提供深度缓冲区。因此,如果你没有得到一个,那么不修改工具就无法解决这个问题。也许你是对的,我现在正在使用OpenTK,正如你所建议的,它肯定比我提到的库更完整。谢谢你,尼科尔。(仅供参考:):Esri(几乎)是地理信息系统开发(GIS)的领导者,ArcGIS是通过应用地理知识设计和管理解决方案的完整系统)再次感谢。