资源简介
在C++环境下使用Opengl实现圆锥和圆锥的绘制,有静态上点白色光源,使用方向键控制旋转,点击鼠标右键实现圆锥和圆柱间的转换。

代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
#define PI 3.14159f
#define RADIUS 50.0f
#define BITMAP_ID 0x4D42 // the universal bitmap ID
////// Texture Information
BITMAPINFOHEADER bitmapInfoHeader; // bitmap info header
unsigned char* bitmapData; // the texture data
unsigned int texture; // the texture object
bool flags = true;
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
void SpecialKeys(int key int x int y);
void ChangeSize( GLsizei w GLsizei h );
void SetupRC();
// LoadBitmapFile
// desc: Returns a pointer to the bitmap image of the bitmap specified
// by filename. Also returns the bitmap header information.
// No support for 8-bit bitmaps.
unsigned char *LoadBitmapFile(char *filename BITMAPINFOHEADER *bitmapInfoHeader)
{
FILE *filePtr; // the file pointer
BITMAPFILEHEADER bitmapFileHeader; // bitmap file header
unsigned char *bitmapImage; // bitmap image data
int imageIdx = 0; // image index counter
unsigned char tempRGB; // swap variable
// open filename in “read binary“ mode
filePtr = fopen(filename “rb“);
if (filePtr == NULL)
return NULL;
// read the bitmap file header
fread(&bitmapFileHeader sizeof(BITMAPFILEHEADER) 1 filePtr);
// verify that this is a bitmap by checking for the universal bitmap id
if (bitmapFileHeader.bfType != BITMAP_ID)
{
fclose(filePtr);
return NULL;
}
// read the bitmap information header
fread(bitmapInfoHeader sizeof(BITMAPINFOHEADER) 1 filePtr);
// move file pointer to beginning of bitmap data
fseek(filePtr bitmapFileHeader.bfOffBits SEEK_SET);
// allocate enough memory for the bitmap image data
bitmapImage = (unsigned char*)malloc(bitmapInfoHeader->biSizeImage);
// verify memory allocation
if (!bitmapImage)
{
free(bitmapImage);
fclose(filePtr);
return NULL;
}
// read in the bitmap image data
fread(bitmapImage 1 bitmapInfoHeader->biSizeImage filePtr);
// make sure bitmap image data was read
if (bitmapImage == NULL)
{
fclose(filePtr);
return NULL;
}
// swap the R and B values to get RGB since the bitmap color format is in BGR
for (imageIdx = 0; imageIdx < bitmapInfoHeader->biSizeImage; imageIdx+=3)
{
tempRGB = bitmapImage[imageIdx];
bitmapImage[imageIdx] = bitmapImage[imageIdx + 2];
bitmapImage[imageIdx + 2] = tempRGB;
}
// close the file and return the bitmap image data
fclose(filePtr);
return bitmapImage;
}
//定义光源
//光源结构
typedef struct tag_lightingStruct {
GLfloat ambient[4];
GLfloat diffuse[4];
GLfloat specular[4];
} lightingStruct;
lightingStruct coloredLighting = {{0.0 1.0 1.0 1.0} {1.0 1.0 1.0 1.0} {0.0 0.0 0.0 0.0}};
lightingStruct *currentLighting;
//光源位置
GLfloat light0_pos[] = {0.0 80.0 0.01.0};
//绘制圆锥
void Cone()
{
float texLeft; // left texture coordinate
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 38912 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.exe
文件 427628 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.ilk
文件 633856 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.pdb
文件 46465024 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\ipch\使用opengl绘制圆柱和圆锥-5013c5b6\使用opengl绘制圆柱和圆锥-df36b874.ipch
文件 722 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\cl.command.1.tlog
文件 15028 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\CL.read.1.tlog
文件 422 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\CL.write.1.tlog
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 2 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 1644 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 3322 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 888 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\li
文件 450 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\mt.command.1.tlog
文件 446 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\mt.read.1.tlog
文件 378 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\mt.write.1.tlog
文件 640 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\rc.command.1.tlog
文件 350 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\rc.read.1.tlog
文件 358 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\rc.write.1.tlog
文件 510976 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\vc100.idb
文件 282624 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\vc100.pdb
文件 406 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.exe.em
文件 472 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.exe.em
文件 381 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.exe.intermediate.manifest
文件 77 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.lastbuildstate
文件 4491 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.log
文件 220 2011-11-08 17:16 使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥_manifest.rc
............此处省略17个文件信息
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- 安卓c语言开发SDL2+opengles
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- 交互式计算机图形学 第六版 OpenGL源代
- c++ 画图(14Qt-XPS)
评论
共有 条评论