我在Opengl中设置了如下转换:
glPushMatrix();
glTranslated(pntPos.X(), pntPos.Y(), pntPos.Z());
glRotated(dx, 1, 0, 0);
glRotated(dy, 0, 1, 0);
glRotated(dz, 0, 0, 1);
//I use this to Render a freely placeable textbox in 3d
//space which is based on the FTGL-Toolkit [1] (for TTF support).
m_FTLayout.Render(
我正在处理一个程序的一部分,在这个程序中,给定一个xyz坐标集合,建立一个三维模型。我已经完成了这张图片所需的所有功能(即平移,旋转,缩放),但是给出的xyz坐标越多,我的程序运行速度就越慢。当我处理29000个坐标时,我的程序运行得相当平稳,但当我有30万点时,我的程序就慢了下来。我使用SharpGL是为了在WPF中使用OpenGL。插入所有这些点的代码如下:
gl.Begin(OpenGL.GL_LINES);
for (int i = 0; i < (parser.dataSet.Count - 1); i++)
{
gl
对于二维齐次坐标,我有一个3x3变换矩阵:
a b c
d e f
g h i
我想将它传递给2D应用程序中的OpenGL (使用glMultMatrix),但是OpenGL采用4x4矩阵作为三维齐次坐标。我希望由我的4x4矩阵转换的所有坐标以x和y结束,就像3x3矩阵和z=0一样。
我已经试过想办法了。对于向量x, y, 1,我将得到转换后的向量ax + by + c, dx + ey + f, gx + hy + i,这意味着对于向量x, y, 0, 1,我希望得到转换的向量ax + by + c, dx + ey + f, 0, ?。这样做的一个矩阵是(据我所知):
a b 0 c
d
我有一个3D .OBJ模型文件,使用ASSIMP库在我的OpenGL ES 2 Android应用程序中加载。所有的脸都是三角形的。
我想为我的网眼画线框。在OpenGL中,我们有一个叫做glPolygonMode的东西,它只在一行中支持线框绘图。
我是否可以使用一个函数将这些三角曲面转换成一对线段,然后使用GL_LINES绘制这些线段?
任何更好的方法绘制线框的三维网格在OpenGL ES 2将不胜感激。也许是基于GLSL着色器的东西。
我当时正在研究OpenGL的gluUnProject是如何工作的。有一件事我不明白:返回射线而不是3D点有什么好处吗?
我们可以通过输入屏幕x和y来获取光线,而不是3D点。链接的文档中写着we can’t really go from a mouse point to a single 3D point。
但我认为从鼠标坐标中获得3D点仍然是可能的。3D图形库通常实现z缓冲区,我们可以很容易地从z缓冲区中获得z(在屏幕坐标中)的值。例如,给定鼠标坐标x和y,z的值可以由1.0/zbuffer[y][x]计算。用这些信息很容易得到三维世界空间x,y和z。那么,为什么不以这种方式实现gluUnP
在我的OpenGL程序中,我按顺序执行以下操作:
// Drawing filled polyhedrons
// Drawing points using GL_POINTS
// Displaying information for each above point beside it
为了显示点信息(例如点标识符/数字),我使用()将点的三维坐标转换为2D窗口坐标。我使用()和2D字符呈现代码在2D窗口位置编写点标识符。
当呈现的点被另一个原语所遮挡时,由于在OpenGL管道中发生的自动遮挡测试和深度测试,它将不会自动显示。然而,我的点标识符文本显示在点旁边,即使它被遮挡了,因为我没有得