游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2179|回复: 3

有人来探讨一下OpenGL的矩阵吗?

[复制链接]

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-11-7 09:38:00 | 显示全部楼层 |阅读模式
OpenGL有两个常用矩阵,模型视图矩阵我懂了一些,

|1   0   0   0|  x轴方向
|0   1   0   0|  y轴方向
|0   0   1   0|  z轴方向
|0   0   0   1|  物体的坐标(x y z)

所以平移的时候只改变最后一行的数值,
而旋转的时候却改变上面三行的数值。

这个你可以在调用glTranslatef函数或glRotatef函数后,
再调用glGetFloatv(GL_MODELVIEW_MATRIX);函数查看到。

==================================

但是,投影矩阵我却确实看不懂,
有人告诉我投影矩阵的各行各列代表什么意思吗?


谢谢啦!

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-11-7 09:50:00 | 显示全部楼层

Re:有人来探讨一下OpenGL的矩阵吗?

在这个论坛看到一段代码:

拿回去好好研究一下,然后再跟大家探讨了。

gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
{
    GLdouble m[4][4];
    double sine, cotangent, deltaZ;
    double radians = fovy / 2 * __glPi / 180;

    deltaZ = zFar - zNear;
    sine = sin(radians);
    if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) {
return;
    }
    cotangent = COS(radians) / sine;

    __gluMakeIdentityd(&m[0][0]);
    m[0][0] = cotangent / aspect;
    m[1][1] = cotangent;
    m[2][2] = -(zFar + zNear) / deltaZ;
    m[2][3] = -1;
    m[3][2] = -2 * zNear * zFar / deltaZ;
    m[3][3] = 0;
    glMultMatrixd(&m[0][0]);
}

17

主题

85

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2005-11-7 16:47:00 | 显示全部楼层

Re: 有人来探讨一下OpenGL的矩阵吗?

清华大学的《3D游戏与计算机图形学中的数学方法》有关于
投影矩阵的推导过程
网上也可以找找相关的文章

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-11-8 08:50:00 | 显示全部楼层

Re:有人来探讨一下OpenGL的矩阵吗?

哦, 谢谢你哈,

看来我可以去书店找找这本书了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 13:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表