资源简介
计算机图形学,绘制一个宇宙的太阳系,要求有九大行星,有各自的公转,自转,以及月球绕地球等
代码片段和文件信息
// LoadTGA.c
// Loads a Targa file for OpenGL
// Richard S. Wright Jr.
// OpenGL SuperBible
// This really only works with 24/32/8 bit targas
#include “Tool.h“
#include
// Define targa header.
#pragma pack(1)
typedef struct
{
GLbyte identsize; // Size of ID field that follows header (0)
GLbyte colorMapType; // 0 = None 1 = paletted
GLbyte imageType; // 0 = none 1 = indexed 2 = rgb 3 = grey +8=rle
unsigned short colorMapStart; // First colour map entry
unsigned short colorMapLength; // Number of colors
unsigned char colorMapBits; // bits per palette entry
unsigned short xstart; // image x origin
unsigned short ystart; // image y origin
unsigned short width; // width in pixels
unsigned short height; // height in pixels
GLbyte bits; // bits per pixel (8 16 24 32)
GLbyte descriptor; // image descriptor
} TGAHEADER;
#pragma pack(8)
////////////////////////////////////////////////////////////////////
// Allocate memory and load targa bits. Returns pointer to new buffer
// height and width of texture and the OpenGL format of data.
// Call free() on buffer when finished!
// This only works on pretty vanilla targas... 8 24 or 32 bit color
// only no palettes no RLE encoding.
GLbyte *gltLoadTGA(const char *szFileName GLint *iWidth GLint *iHeight GLint *iComponents GLenum *eFormat)
{
FILE *pFile; // File pointer
TGAHEADER tgaHeader; // TGA file header
unsigned long lImageSize; // Size in bytes of image
short sDepth; // Pixel depth;
GLbyte *pBits = NULL; // Pointer to bits
// Default/Failed values
*iWidth = 0;
*iHeight = 0;
*eFormat = GL_BGR_EXT;
*iComponents = GL_RGB8;
// Attempt to open the fil
pFile = fopen(szFileName “rb“);
if(pFile == NULL)
return NULL;
// Read in header (binary)
fread(&tgaHeader 18/* sizeof(TGAHEADER)*/ 1 pFile);
// Do byte swap for big vs little endian
#ifdef __APPLE__
BYTE_SWAP(tgaHeader.colorMapStart);
BYTE_SWAP(tgaHeader.colorMapLength);
BYTE_SWAP(tgaHeader.xstart);
BYTE_SWAP(tgaHeader.ystart);
BYTE_SWAP(tgaHeader.width);
BYTE_SWAP(tgaHeader.height);
#endif
// Get width height and depth of texture
*iWidth = tgaHeader.width;
*iHeight = tgaHeader.height;
sDepth = tgaHeader.bits / 8;
// Put some validity checks here. Very simply I only understand
// or care about 8 24 or 32 bit targa‘s.
if(tgaHeader.bits != 8 && tgaHeader.bits != 24 && tgaHeader.bits != 32)
return NULL;
// Calculate size of image buffer
lImageSize = tgaHeader.width * tgaHeader.height * sDepth;
// Allocate memory and check for success
pBits
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 165376 2013-02-27 20:20 solar\Debug\glu32.dll
文件 169984 2013-02-27 20:20 solar\Debug\glut.dll
文件 169984 2013-02-27 20:20 solar\Debug\glut32.dll
文件 3646 2013-05-06 18:53 solar\Debug\LoadTGA.obj
文件 52981 2013-05-06 18:53 solar\Debug\LoadTGA.sbr
文件 3220480 2013-05-05 20:29 solar\Debug\Solar2.bsc
文件 217168 2013-05-07 22:37 solar\Debug\Solar2.exe
文件 272296 2013-05-07 22:37 solar\Debug\Solar2.ilk
文件 27570 2013-05-07 22:37 solar\Debug\Solar2.obj
I.A.... 2423452 2013-05-06 19:30 solar\Debug\Solar2.pch
文件 541696 2013-05-07 22:37 solar\Debug\Solar2.pdb
文件 629631 2013-05-07 22:37 solar\Debug\Solar2.sbr
文件 58368 2013-05-07 22:37 solar\Debug\vc60.idb
文件 53248 2013-05-07 22:37 solar\Debug\vc60.pdb
文件 1572908 2013-05-05 20:28 solar\Earth.tga
文件 302727 2013-05-05 20:24 solar\GLEXT.H
文件 3110444 2013-05-05 20:25 solar\Jupiter.tga
文件 3780 2013-05-05 20:24 solar\LoadTGA.c
文件 3110444 2013-05-05 20:25 solar\Mars.tga
文件 1572908 2013-05-05 20:26 solar\Mercury.tga
文件 1572908 2013-05-05 20:28 solar\Moon.tga
文件 777644 2013-05-05 20:24 solar\Neptune.tga
文件 777644 2013-05-05 20:24 solar\Pluto.tga
文件 777644 2013-05-05 20:24 solar\Saturn.tga
文件 13188 2013-05-07 22:37 solar\Solar2.c
文件 3583 2013-05-06 18:54 solar\Solar2.dsp
文件 520 2013-05-05 20:24 solar\Solar2.dsw
文件 107520 2013-05-07 22:37 solar\Solar2.ncb
文件 48640 2013-05-07 22:37 solar\Solar2.opt
文件 1218 2013-05-07 22:37 solar\Solar2.plg
............此处省略9个文件信息
相关资源
- 用opengl绘制的兔子
- 基于OpenGL的描点绘制Bezier曲线
- opengl天空盒的效果源代码
- Qt5版NeHe OpenGL教程6-10
- 基于opengl下的选择物体局部放大
- DirectX3D太阳系
- OPENGL粒子系统之喷泉
- 3D opengl魔方
- opengles加载3d模型(纹理+光照)
- opengl画的小花
- OpenGL三维图形系统开发与实用技术.
- opengl 立体球体的实现
- loop 细分,结合openGL
- opengl中加载dem方法和贴纹理
- OpenGL写的一个带背景音乐的场景
- opengl房屋设计2
- OpenGL绘制的鱼轮廓曲线
- unity3d 太阳 地球 月球 构成的建议太阳
- 3D OPENGL 飞行游戏源代码
- OpenGL 超酷三维动画DEMO
- OpenGL蓝宝书所需库可直接使用
- OPENGL 画地球 真实感超强-纹理贴图 光
- OPENGL中的GLUT源代码
- Qt OpenGL 多图片纹理例程
- opengl中天空盒的绘制
- OpenGL下立方体 正四面体绘制与贴图。
- 资源文件此资源是作者博客教程所用
- openGL完成雪花飞舞源码
- OpenGL ES 显示RGB数据
- opengl实现鱼眼矫正(球面等距模型)
评论
共有 条评论