glulookat() usage-opengl and C++
glulookat() usage-opengl and C++
你能帮我解决这个问题吗:我有一个3D世界,我想以第一人称的方式定位相机(真正的目的是在穿越小行星带的时候从飞船内部获得第一人称视角)。在这种情况下,glulook的参数是什么?我想到:
gluLookAt(30, 30, 30, 0, 0, 0, 0, 1, 0);//the up vector would be normal y axis
这是正确的吗?
如果我想让镜头随着飞船移动,该怎么做呢?当移动船的时候,我也应该移动"眼睛"的坐标。像眼睛的坐标(glulook的前3个参数)应该与船的坐标相同吗?
你所建议的gluLookAt调用会将相机定位在(30,30,30)
并将其指向原点。
gluLookAt(Ship_Position_X,Ship_Position_Y,Ship_Position_Z,
Ship_Forward_X,Ship_Forward_Y,Ship_Forward_Z,
0,1,0);
这更像是你需要的。你必须每一帧调用它,这样相机就会跟随船的运动。如果你想让船做桶滚,你就必须有额外的变量来跟踪向上的矢量。
我喜欢有某种结构来保存坐标,这样我就可以重载gl函数来获取它们并编写更短的函数调用,例如
// roll your own glVec, or use a co-ordinate class provided by a library you happen to be using.
inline void gluLookAt(glVec position, glVec forward, glVec up)
{
gluLookAt(position.x,position.y,position.z,forward.x,forward.y,forward.z,up.x,up.y,up.z);
}
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- libgphoto2 and Visual Studio 2019