`
huozheleisi
  • 浏览: 1236137 次
文章分类
社区版块
存档分类
最新评论

OpenGL编程入门

 
阅读更多

                       [编程入门]

这里我将给出一个小例子让大家熟悉用辅助库的编程结构:

//////////////////////////////////////////////////////////
// This is an OS specific header file
//判别操作系统的基本头文件

#include 

// disable data conversion warnings

#pragma warning(disable : 4244)     // MIPS
#pragma warning(disable : 4136)     // X86
#pragma warning(disable : 4051)     // ALPHA
//////////////////////////////////////////////////////////
//opengl.cpp
//主程序
#include "windows.h"
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>


#pragma comment(lib, "OpenGl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glaux.lib")

void myinit(void);
void CALLBACK  display(void);
void CALLBACK  reshape(GLsizei w,GLsizei h);
//这里不用管reshape(),只是一个用于窗口改变大小时的处理
//与绘图无关,后面会讲到
//这里的重点是display(),请注意绘图的方法
void myinit(void)
{
        /*初始化:*/
       auxInitDisplayMode(AUX_SINGLE | AUX_RGBA);
        //窗口显示单缓存和RGB(彩色)模式
        auxInitPosition(0,0,500,500);
        //大小x=500 y=500 (0,0)是屏幕左上点
        auxInitWindow("sample1");
        //窗口初始化,参数是标题
        glClearColor(0.0,0.0,0.0,0.0);
        //将窗口清为黑色
        glClear(GL_COLOR_BUFFER_BIT);
        //将颜色缓存清为glClearColor命令所设置的颜色
        //即背景色
}

void CALLBACK reshape(GLsizei w,GLsizei h)
{
	glViewport(0,0,w,h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	if(w<=h)
 		glOrtho(-20.0,20.0,-20.0*(GLfloat)h/(GLfloat)w,
         		20.0*(GLfloat)h/(GLfloat)w,-50.0,50.0);
	else
  		glOrtho(-20.0*(GLfloat)h/(GLfloat)w,
         		20.0*(GLfloat)h/(GLfloat)w,-20.0,20.0,-50.0,50.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

void CALLBACK display(void)
{
	glBegin(GL_TRIANGLE_STRIP);//画连续填充的多个三角
	glColor3f(1.0,0.0,0.0);
	glVertex3f(15.0,0.0,0.0);
	glColor3f(0.0,1.0,0.0);
	glVertex3f(-15.0,0.0,0.0);
	glColor3f(0.0,0.0,1.0);
	glVertex3f(0.0,15.0,15.0);
//第一个三角

	glColor3f(0.0,1.0,1.0);
	glVertex3f(10.0,15.0,-15.0);
//第二个三角

	glColor3f(1.0,1.0,0.0);
	glVertex3f(15.0,0.0,0.0);
//第三个三角

	glEnd();
	glFlush();
}

void main(void)
{

    myinit();
    auxReshapeFunc(reshape);
    auxMainLoop(display);
}
//end of sample
所谓连续填充就是1、2、3点组成三角1、2、3、4点组成三角2...
这里一共画乐3个向连接的彩色三角,组成乐一个由三个彩色平面
围成的空心三角椎...enjoy it

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics