用GDI实现3D
来源:互联网 发布:天体战士 知乎 编辑:程序博客网 时间:2024/05/02 02:18
在CSDN上看到了一个很强大的程序:用GDI实现3D,可以变换视角的查看.x文件。
不过想想看,好像实现起来也并不难。。。
和所有基础的3D程序一样,先把视椎变换为单位立方体,
变换矩阵为:
当然,DirectX和OpenGL里都有现成的函数:
单位立方体中的点正交投影得到的(x,y,z)*视口变换矩阵 得到 (x',y',z')。
(x',y')对应屏幕点,z'为其深度,用于点的竞争。
把每个三角面匹配纹理用GDI基本函数画出来就可以了。
CSDN的那个程序
不过想想看,好像实现起来也并不难。。。
和所有基础的3D程序一样,先把视椎变换为单位立方体,
变换矩阵为:
当然,DirectX和OpenGL里都有现成的函数:
//OpenGL
void gluPerspective(GLdouble fovy,
GLdouble aspect,
GLdouble zNear,
GLdouble zFar);
//DirectX
D3DXMatrixPerspectiveFovLH( D3DXMATRIX *pOut,
FLOAT fovY,
FLOAT Aspect,
FLOAT zn,
FLOAT zf
);
void gluPerspective(GLdouble fovy,
GLdouble aspect,
GLdouble zNear,
GLdouble zFar);
//DirectX
D3DXMatrixPerspectiveFovLH( D3DXMATRIX *pOut,
FLOAT fovY,
FLOAT Aspect,
FLOAT zn,
FLOAT zf
);
单位立方体中的点正交投影得到的(x,y,z)*视口变换矩阵 得到 (x',y',z')。
(x',y')对应屏幕点,z'为其深度,用于点的竞争。
把每个三角面匹配纹理用GDI基本函数画出来就可以了。
CSDN的那个程序
- 用GDI实现3D
- gdi+3d光栅化
- GDI实现的2D变换算法(旋转,平移)[实际上GDI本身提供了这些算法]
- 使用GDI+模拟directx 3D渲染中的坐标变换
- 用GDI+实现的超酷时钟
- 用gdi 实现屏幕截图功能
- 用3D技术实现2D场景
- JavaScript用canvas元素实现 2D 和 3D
- 用js实现3D页面
- 用j4lChartAndroid实现3D图饼
- 用射线实现3D点击效果
- 用JavaScript实现3D轮转
- OpenGL实现3d
- OpenGL实现3d
- 3D翻转实现
- GDI+验证码实现
- GDI+ 双缓冲实现
- GDI+ 双缓冲实现
- 关于一道面试题的源代码解答
- some materials about how to write technical articles
- html-el:optionsCollection,html-el:options,JSTL c:forEach用法比较
- HIbernate主键详解
- PocektPc2003使用蒙版图掉API合并图片
- 用GDI实现3D
- AJAX评分
- 工作中遇到的一些问题小结
- JS日历
- Symbian程序中的观察者模式
- Jadu: 将 PHP 编译成 .NET
- JS日历(二)
- How to write a Makefile
- Ajax为何火!