gpt4 book ai didi

c++ - 在屏幕上渲染 3D 点的最简单方法(C++ Windows Visual Studio)

转载 作者:行者123 更新时间:2023-11-30 05:44:34 25 4
gpt4 key购买 nike

第一次发帖,请多多关照。

背景:我有很强的 C++ 背景。我熟悉所有 C++ 原生的东西以及标准模板库 (STL)。我过去做过一些图形的东西,但它几乎总是乱七八糟的,并且被黑客攻击在一起,必须包含 DLL 文件等......

这是我需要做的,我希望它尽可能简单。

给定一个 3D 点数组,我想将它们渲染到屏幕上。我还希望能够旋转视口(viewport)。我只想能够看到构成模型的 3D 点,并且能够从不同角度查看它们。我将自己填充点数组(例如从文本文件加载它们)。

可悲的是,我知道实现这一切的所有数学知识。我以前从头开始做过,但是,每隔几年就会发生一些糟糕的事情,比如 DirectX 更新,或者我必须使用最新版本的 Visual Studio,然后我的旧代码就不再能正常工作了。

我只需要使用 C++ 以最快的方式将 3D 点渲染到屏幕上。非常感谢。显然,我必须使用一些 API 或其他东西才能使其像 DirectX 或 OpenGL 一样工作。我希望也许有一些我以前从未使用过的系统可以让我调用一个函数,例如“DrawPoint(x,y,z)”,然后我就可以收工了。

所以,我的问题是,如果在我的 C++ 代码中有大量 3D 点和相机的 (x,y,z) 位置以及相机所面对的 vector ,那么最简单的渲染方法是什么这(使用 Windows7 或 Windows8 和 C++ 和 Visual Studio 2010)。

最佳答案

您需要代码来设置相机和模型矩阵,以及投影矩阵。 OpenGL 的固定功能管道可以帮助解决这个问题。

相机基本上是 View 矩阵,结合 3D 点将构成模型 View 矩阵。

如果您要使用 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 渲染应用程序的 Material ,从你的帖子中我不清楚你可能已经实现了多少代码。

为了使它更容易,有一个很好的资源可用 here我关注它已经有一段时间了,它有一套很棒的 OpenGL 注释。

如果您查看 Matrix4 类笔记,并从那里下载“matrix.zip”教程源代码,它几乎就是您想要的。只需将“main.cpp”文件中 drawModel() 函数中的代码替换为上面的代码,即可从文件加载 3D 点。此外,确保 VS 项目属性中包含 GLUT 库文件夹。

我还建议您仔细阅读这些教程和注释,它们非常简洁、结构合理并且涵盖了 OpenGL 的大部分基础知识。

关于c++ - 在屏幕上渲染 3D 点的最简单方法(C++ Windows Visual Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com