frustum

    0热度

    1回答

    我试图让一个平铺的渲染器工作(这个想法是通过将它分解成块并渲染一个来渲染一个大的视锥体)。 我将代码转换成可视角度的标准透视投影到左,右,顶部和底部剪裁平面,然后可以传递到glFrustum。 我被困在正确地打破这一点。

    0热度

    1回答

    在GLSL着色器中,我需要省略一些镶嵌补丁以显着提高性能。这些补丁是每个顶点具有给定世界坐标的三角形。但是,当我将这些坐标转换为视锥体剔除的视图空间时,会出现误差。 这是原始地形。 这是错误如何影响它的顶部。 这与污垢的截面的特写镜头。 这些错误在屏幕的顶部,但也侧面和底部namly发生。 这里是我用来确定是否应该排除三角形(在GLSL中)的代码。 bool inFrustum(vec3 p,ve

    1热度

    1回答

    我正在寻找一种有效的方式来使用directx 11显示大量球体。球体由(x,y,z,r)定义,其中(x,y,z)是空间坐标,r是半径。我只想显示可以看到的球体,这意味着不在视野内的球体和太小以至于看不见的球体都不会被绘制。但是,如果一组小于一个像素的球体至少与一个像素一样大,那么我想要显示最主要的颜色。球体只有一种颜色和不同级别的透明度。任何帮助将不胜感激,不完整的答案可以接受。

    0热度

    1回答

    用于提取由MVP矩阵给出的视锥体的6平面方程的方法由this给出。 它有一种类似的方法,可以直接从4x4 MVP矩阵中获取其8个角点的世界空间坐标,而不需要使用三角?

    4热度

    2回答

    我正在制作一个OpenGL C++应用程序,用于跟踪用户相对于屏幕的位置,然后将呈现的场景更新为用户的视角。这被称为“桌面VR”,或者您可以将屏幕想象为立体布景或鱼缸。我对OpenGL相当陌生,迄今为止只定义了一个非常简单的场景,只是一个立方体,并且它最初是正确渲染的。 问题是,当我开始移动并想要重新渲染立方体场景时,投影平面似乎已经翻译过了,我没有看到我认为我应该做的事。我想要修理这架飞机。如果

    3热度

    2回答

    我想渲染具有特定摄像机参数的场景,其中分辨率非常高(比如20,000 x 20,000像素),但实际上我只对图像平面的640x480小部分感兴趣。 我不一定只想放大该部分并改变相机指向的位置。我想让相机保持指向相同的方向,我只想渲染一小部分场景。 我附上一张照片,试图证明什么,我讲:如何我可以设置使用OpenGL的摄像头矩阵呼吁妥善这样的事情 任何提示?

    1热度

    2回答

    我试图通过使用glFrustum限制查看量来剪辑屏幕上的图像。在Glfrustum的官方文档中提到,left, right, top, bottom, near, far是裁剪的坐标。我认为他们是屏幕坐标,并试图做到: glFrustum(100, 924, 100, 668, 3, 1000); 上面没有显示任何东西给我在屏幕上。所以,我只是看着某处,看到一些代码如下(但为什么这些坐标负):

    1热度

    1回答

    当我使用透视相机检查点是否在一个平截头体内时,它可以工作。但是当我使用正交相机检查时,平截头体框看起来不准确。飞机设置正确。如果使用Orthographic相机,是否还有其他需要更改的内容? 下面是我如何设置面.. if((this.mouse.screenx>mouse.screen.x && this.mouse.screeny<mouse.screen.y)|| (this.mou

    0热度

    1回答

    我试图通过获得屏幕空间坐标然后使用交叉产品来获得视锥体平面来计算每个平铺截锥体。然而,当我检查哪些瓷砖受光线影响时,它们的方向相反,如同它们正朝着相机的相反方向移动,以及在它后面。我试过改变交叉产品订单,但它似乎没有工作。下面是生成视锥和检查,如果光与它的代码: //Start by getting the corners in screen space uint minX = MAX_WORK

    2热度

    1回答

    我有一个程序做增强现实技术在OpenGL使用: glFrustum(-near*centerImageX/(GLfloat)fx, near*(imageWidth-centerImageX)/(GLfloat)fx, near*(centerImageY-imageHeight)/(GLfloat)fy, near*centerImageY/(GLfloat)fy, near, far);