#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;
WIN32 实现OPenGL显示源码
最新推荐文章于 2021-05-12 12:35:54 发布
本文档提供了一段使用WIN32 API来创建并初始化OpenGL上下文的源码,通过链接glaux.lib、opengl32.lib和glu32.lib库文件,实现了OpenGL的基本显示功能。
摘要由CSDN通过智能技术生成