WIN32 实现OPenGL显示源码

本文档提供了一段使用WIN32 API来创建并初始化OpenGL上下文的源码,通过链接glaux.lib、opengl32.lib和glu32.lib库文件,实现了OpenGL的基本显示功能。
摘要由CSDN通过智能技术生成
#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>

struct sample_MATERIAL{
 GLfloat ambient[3];
 GLfloat diffuse[3];
 GLfloat specular[3];
 GLfloat emission[3];
 GLfloat alpha;
 GLfloat phExp;
 int   texture;
};

static sample_MATERIAL materials [4] = {
 {
  {0.117647f,0.117647f,0.117647f},	{0.752941f,0.752941f,0.752941f},	{0.752941f,0.752941f,0.752941f},	{0.0f,0.0f,0.0f},	1.0f,8.0f,-1}, //Explorer Default
 {
  {1.0f,0.0f,0.0f},	{1.0f,0.0f,0.0f},	{0.628627f,0.628627f,0.628627f},	{0.0f,0.0f,0.0f},	1.0f,4.0f,-1}, //red
 {
  {0.0f,1.0f,0.0f},	{0.0f,1.0f,0.0f},	{0.628627f,0.628627f,0.628627f},	{0.0f,0.0f,0.0f},	1.0f,4.0f,-1}, //green
 {
  {0.0f,0.470588f,1.0f},	{0.0f,0.470588f,1.0f},	{0.628627f,0.628627f,0.628627f},	{0.0f,0.0f,0.0f},	1.0f,4.0f,-1} //blue
};

// 6 Verticies
// 7 Texture Coordinates
// 5 Normals
// 8 Triangles

static BYTE face_indicies[8][9] = {
// Pyramid01
	{0,4,1 ,0,0,0 ,0,1,2 }, {1,4,2 ,0,0,0 ,3,4,2 }, {2,4,3 ,0,0,0 ,2,4,0 },
	{3,4,0 ,0,0,0 ,0,4,5 }
// Object-red
	, {5,2,3 ,1,1,1 ,6,0,2 }
// Object02-g
	, {5,3,0 ,2,2,2 ,6,0,2 }
// Object03-b
	, {5,1,2 ,3,3,3 ,6,0,2 }
// Object04
	, {5,0,1 ,4,4,4 ,6,0,2 }
};
static GLfloat vertices [6][3] = {
{-0.5f,-0.5f,-0.333333f},{0.5f,-0.5f,-0.333333f},{0.5f,0.5f,-0.333333f},
{-0.5f,0.5f,-0.333333f},{-1.49378e-08f,1.02206e-08f,-0.333333f},{-1.49378e-08f,1.02206e-08f,0.333333f}
};
static GLfloat normals [5][3] = {
{0.0f,0.0f,-1.0f},{0.0f,0.8f,0.6f},{-0.8f,0.0f,0.6f},
{0.8f,0.0f,0.6f},{0.0f,-0.8f,0.6f}
};
static GLfloat textures [7][2] = {
{0.0f,1.0f},{0.5f,0.5f},{1.0f,1.0f},
{1.0f,2.0f},{0.5f,1.5f},{0.0f,2.0f},
{0.5f,2.0f}
};
/*Material indicies*/
/*{material index,face count}*/
static int material_ref [5][2] = {
{0,4},
{1,1},
{2,1},
{3,1},
{0,1}
};
float sizex,sizey;
LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);
GLsizei glnWidth, glnHeight;
GLdouble gldAspect;
void SetDCPixelFormat (HWND,HDC);
void InitializeRC (void);
void DrawScene (HDC, UINT,UINT);

HPALETTE hPalette = NULL;
GLfloat nSize = 0.0f;
GLfloat nCol = 0.0f;
GLfloat nTop = 1.0f;
GLfloat nBottom = 0.0f;
int bFlag = 1;
char wndname[256]="";

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpszCmdLine, int nCmdShow)
{
    static char szAppName[] = "3D Exploration Exported APP";
    WNDCLASS wc;
    HWND hwnd;
    MSG msg;


    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = (WNDPROC) WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值