• 大小: 9.82MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-07
  • 语言: C/C++
  • 标签: OpenGL  C++  

资源简介

在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\link-cvtres.read.1.tlog

     文件          2  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link-cvtres.write.1.tlog

     文件          2  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.5536-cvtres.read.1.tlog

     文件          2  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.5536-cvtres.write.1.tlog

     文件          2  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.5536.read.1.tlog

     文件          2  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.5536.write.1.tlog

     文件       1644  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.command.1.tlog

     文件       3322  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.read.1.tlog

     文件        888  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\link.write.1.tlog

     文件        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.embed.manifest

     文件        472  2011-11-08 17:16  使用OpenGL绘制圆柱和圆锥\使用OpenGL绘制圆柱和圆锥\Debug\使用OpenGL绘制圆柱和圆锥.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论