在数字时代,3D视觉效果已经成为游戏、电影、模拟和许多其他领域不可或缺的一部分。C++因其性能优势而成为实现这些效果的首选语言之一👍。本文将带你了解如何在C++中创建3D视觉效果,并且保证整个过程的简单、方便和高效😎。
1.选择编译器(IDE)🤗
考虑到大部分初学者的实战经验和设备性能较为低下,我们不得不抛弃功能强大但复杂的Visual Studio等IDE🤔,这里选择功能较为强大并且用法简单、占用较低的小熊猫C++(RedPanda-Cpp)👀💡。首先进入小熊猫C++官网下载最新版的小熊猫C++(网盘中的.exe文件为安装包):
安装完毕后继续下载要用的库文件,这里我们使用raylib:
按需求选择对应系统位数的库压缩包,并按需求下载驱动。raylib缺省使用OpenGL 3.3。如果电脑上缺少OpenGL驱动,或者不支持OpenGL 3.3,则运行小熊猫C++自带的raylib时会报错😫:
GLFW error: 65543 Description : WGL:OpenGL profile requested but WGL_ARB_create_context_profile is unavailable.
如果显卡不支持OpenGL 2.1,需要下载软渲染的mesa驱动,用解压出来的opengl32.dll替换C:\windows\system32中的同名文件。注意操作系统是32位还是64位,使用对应的版本。
解压库文件后,将解压后的文件夹放入小熊猫C++所在的文件夹中,替换原来的文件夹。raylib是一个轻量级、跨平台的游戏开发库,它支持2D和3D图形渲染、音频处理和数学运算。这个库使用纯C语言编写,但提供了对C++的支持,并且有超过50种不同语言的绑定,而且在小熊猫C++中,加入这个库非常方便😍,所以选择这个库进行教学😆。
2.测试代码🤯
上述步骤走完之后,我们可以通过这一串代码测试这个库能不能正常使用,下面这个程序绘制了一个旋转的立方体(其实是摄像机在围绕立方体旋转😅):
#include <raylib.h>
#include <math.h>
int main(void)
{
// 初始化
const int screenWidth = 640;
const int screenHeight = 480;
//启用反锯齿
SetConfigFlags(FLAG_MSAA_4X_HINT);
//初始化窗口
InitWindow(screenWidth, screenHeight, "测试");
// 初始化摄像机
Camera3D camera = { 0 };
camera.position = (Vector3){ 40.0f, 20.0f, 0.0f }; //相机所在位置{x,y,z}
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; //相机朝向位置{x,y,z}
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; //相机正上方朝向矢量
camera.fovy = 70.0f; //相机视野宽度
camera.projection = CAMERA_PERSPECTIVE; //采用透视投影
//设置动画帧率(刷新率,fps)为30帧/秒
SetTargetFPS(30);
//--------------------------------------------------------------------------------------
int angle