资源简介
基于opengl写的一个小例程,绘制四面体,并且对其贴图......程序比较简单,适合入门

代码片段和文件信息
#include
#include
#include
#include
#include
static GLuint texName;
static int rtri =0;
float normal[4][3];
float p1[3]={0.0 2.00.0};
float p2[3]={-1.0 0.0-1.0};
float p3[3]={1.0 0.0-1.0 };
float p4[3]={0.0 0.01.0};
AUX_RGBImageRec *LoadBMP(char *Filename)
{
FILE *File=NULL;
if(!Filename){
return NULL;
}
File=fopen(Filename“r“);
if (File){
fclose(File);
return auxDIBImageLoad(Filename);
}
return NULL;
}
int LoadGLTextures()
{
int Status = FALSE;
AUX_RGBImageRec *Image[1];
memset(Image0sizeof(void *)*1);
if (Image[0]=LoadBMP(“Data/box.bmp“))
{
Status=TRUE;
glGenTextures(1 &texName);
glBindTexture(GL_TEXTURE_2D texName);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D 0 GL_RGBA Image[0]->sizeX Image[0]->sizeY 0 GL_RGB GL_UNSIGNED_BYTE Image[0]->data);
}
if (Image[0]){
if (Image[0]->data){
free(Image[0]->data);
}
free(Image[0]);
}
return Status;
}
void ReduceToUnit(float vector[3])
{
float length;
length = (float)sqrt((vector[0]*vector[0])+(vector[1]*vector[1])+(vector[2]*vector[2]));
if(length == 0.0f)
length = 1.0f;
vector[0] /= length;
vector[1] /= length;
vector[2] /= length;
}
void donomal(float p11[3] float p22[3] float p33[3] float nor[3]){
float v1[3]v2[3];
v1[0] = p11[0] - p22[0];
v1[1] = p11[1] - p22[1];
v1[2] = p11[2] - p22[2];
v2[0] = p22[0] - p33[0];
v2[1] = p22[1] - p33[1];
v2[2] = p22[2] - p33[2];
nor[0] = v1[1]*v2[2] - v1[2]*v2[1];
nor[1] = v1[2]*v2[0] - v1[0]*v2[2];
nor[2] = v1[0]*v2[1] - v1[1]*v2[0];
ReduceToUnit(nor);
}
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// glEnable(GL_TEXTURE_2D);
// glTexEnvf(GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_REPLACE);
glLoadIdentity();
gluLookAt (0.0 0.0 5.0 0.0 0.0 0.0 0.0 1.0 0.0);
glRotatef(rtri1.01.00.0);
donomal(p1 p3 p2 normal[0]);
donomal(p1 p4 p3 normal[1]);
donomal(p1 p2 p4 normal[2]);
donomal(p2 p3 p4 normal[3]);
glBindTexture(GL_TEXTURE_2D texName);
glBegin (GL_TRIANGLES);
glNormal3fv(normal[0]);
glTexCoord2f(0.0 0.0); glVertex3f(0.0 2.0 0.0);
glTexCoord2f(0.0 1.0); glVertex3f(-1.0 0.0 -1.0);
glTexCoord2f(1.0 0.0); glVertex3f( 1.0 0.0 -1.0);
glNormal3fv(normal[1]);
glTexCoord2f(0.0 0.0); glVertex3f(0.0 2.0 0.0);
glTexCoord2f(1.0 0.0); glVertex3f(1.0 0.0 -1.0);
glTexCoord2f(1.0 1.0); glVertex3f( 0.0 0.0 1.0);
glNormal3fv(no
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 66614 1999-09-25 20:19 3D rendering\Data\box.bmp
..A.SH. 9728 2009-04-29 20:28 3D rendering\Data\Thumbs.db
文件 2016256 2009-04-29 20:39 3D rendering\Debug\Simple.bsc
文件 237654 2009-04-29 20:39 3D rendering\Debug\Simple.exe
文件 394580 2009-04-29 20:39 3D rendering\Debug\Simple.ilk
文件 25127 2009-04-29 20:39 3D rendering\Debug\Simple.obj
文件 43520 2009-04-29 20:11 3D rendering\Debug\Simple.opt
文件 346292 2009-04-29 18:58 3D rendering\Debug\Simple.pch
文件 656384 2009-04-29 20:39 3D rendering\Debug\Simple.pdb
文件 0 2009-04-29 20:39 3D rendering\Debug\Simple.sbr
文件 140288 2009-05-07 14:32 3D rendering\Debug\vc60.idb
文件 77824 2009-04-29 20:39 3D rendering\Debug\vc60.pdb
文件 6071 2009-04-29 20:35 3D rendering\Simple.cpp
文件 3467 2009-04-29 20:35 3D rendering\Simple.dsp
文件 537 2008-10-06 22:37 3D rendering\Simple.dsw
文件 50176 2009-05-07 14:32 3D rendering\Simple.ncb
文件 53760 2009-05-07 14:32 3D rendering\Simple.opt
文件 246 2009-05-07 14:32 3D rendering\Simple.plg
文件 333 2009-05-07 14:32 3D rendering\Simple.sln
..A..H. 6656 2009-05-07 14:32 3D rendering\Simple.suo
目录 0 2009-04-29 20:28 3D rendering\Data
目录 0 2009-04-29 20:39 3D rendering\Debug
目录 0 2009-05-07 14:32 3D rendering
----------- --------- ---------- ----- ----
4135513 23
相关资源
- E4A无障碍跨程序操作类库(带源码、
- OpenGL参考手册
- 实现小波变换例子 upcoef 函数
- A星算法_原理讲解_例子
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- VHDL学习及实例(100个例子)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- autoit自动化测试小工具及帮助(二)
- OpenGL-3D坦克模拟
- 在delphi7下进行autocad二次开发的一个简
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
评论
共有 条评论