我的第一个帖子所以请保持温和。
背景:我有一个非常强大的C ++背景。我熟悉C ++原生的所有东西以及标准模板库(STL)。我过去做过一些图形工作,但它几乎总是很混乱,并且一起被黑客攻击,必须包含DLL文件等...
这是我需要做的事情,我希望尽可能简单。
给定一个3D点数组,我想将它们渲染到屏幕上。我还希望能够旋转视口。我只是希望能够看到构成模型的3D点,我希望能够从不同角度查看它们。我自己填写点数组(例如从文本文件中加载它们)。
可悲的是,我知道要做到这一点的所有数学。我从头开始做过这件事,但是,每隔几年就会发生一些蹩脚的事情,比如DirectX更新,或者我必须使用最新版本的Visual Studio,然后我的旧代码运行得不好。
我只需要以最快的方式使用C ++将3D点渲染到屏幕上。非常感谢你。显然,我必须使用一些API或其他东西使它像DirectX或OpenGL一样工作。我希望可能有一些我以前从未使用的系统只会让我调用一个函数,例如" DrawPoint(x,y,z)"我可以称它为一天。
所以,我的问题是,如果在我的C ++代码中我有一大堆3D点和相机的(x,y,z)位置以及相机所面对的矢量,那么它是什么?最简单的渲染方法(使用Windows7或Windows8和C ++以及Visual Studio 2010)。
答案 0 :(得分:1)
您需要使用代码来设置相机和模型矩阵以及投影矩阵。 OpenGL的固定功能管道可以帮助解决这个问题。
相机基本上是视图矩阵,与3D点组合将构成模型视图矩阵。
如果您使用OpenGL,您可以使用GLU库中的'gluLookAt(...)'作为相机。为了在代码的渲染部分添加3D点,您可以使用固定功能管道绘制点(虽然现代OpenGL已经转移到使用着色器,它应该足够了),所以像这样:
void draw(){
glColor3f(r,g,b); // the r,g,b colour of the points
glPointSize(size); // where size indicates the size of the point
glBegin(GL_POINTS);
glVertex3f(x1, y1, z1); // where x,y,z denotes the point position in 3D space
glVertex3f(x2, y2, z2);
.
.
glVertex3f(xn, yn, zn);
glEnd();
}
这里有很多材料可以用来创建一个3D渲染应用程序,我不清楚你的帖子中你可能已经实现了多少代码。
为了方便起见,有一个很好的可用资源here,我已经关注了很长一段时间,它有很多OpenGL笔记。
如果您查看Matrix4类的注释,并从那里下载'matrix.zip'教程源代码,它几乎就是您想要的。只需使用上面的代码替换'main.cpp'文件中drawModel()
函数中的代码,即可从文件中加载3D点。另外,请确保GLUT库文件夹包含在VS项目属性中。
我还建议您阅读这些教程和笔记,它们非常简洁,结构良好,涵盖了OpenGL的大部分基础知识。