一个简单的OpenGL程序,绘制一个白色正方形

来源:互联网 发布:淘宝商家登入 编辑:程序博客网 时间:2024/04/26 09:19

最近在学习OpenGL,也不知道要怎么学才能学号,就一边贴代码一边记录知识点吧。。。


这是一个非常简单的OpenGL函数,显示是个白色正方形。


代码:

// Win32Project1hello.cpp : 定义应用程序的入口点。
//
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include <tchar.h>


 #ifndef GLUT_DISABLE_ATEXIT_HACK  
   #define GLUT_DISABLE_ATEXIT_HACK 
    #endif


#include<gl/GLUT.H>
//#include<gl/GL.h>
//#include<gl/GLU.h>


void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);//清除所有像素


//绘制一个对角顶点坐标(0.25,1.25,0)和(0.75,0.75,0)的白色矩形
glColor3f(1.0,1.0,1.0);//设置颜色为白色
glBegin(GL_POLYGON);//glBegin()与glEnd()之间的函数调用制定了要绘制的物体,限定一组或多组图元的顶点定义
    glVertex3f(0.25,0.25,0.0);//指定多边形的顶点
glVertex3f(0.75,0.25,0.0);
glVertex3f(0.75,0.75,0.0);
glVertex3f(0.25,0.75,0.0);
    glEnd();
glFlush();//用于强制刷新缓冲,保证绘图命令将被执行,而不是存储在缓冲区中等待其他的OpenGL命令
}


void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);//将清空颜色设置为黑


glMatrixMode(GL_PROJECTION);//glMatrixMode:告诉计算机“我接下来要做什么”,GL_PROJECTION:要对投影相关进行操作
glLoadIdentity();//将当前的用户坐标系的原点移到了屏幕中心
glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);//投影类型:正交投影。不会因为离屏幕的远近而产生大小的变换的情况
}


 int _tmain(int argc, _TCHAR* argv[])
{
glutInit(&argc,(char**)argv);
glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("hello");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}


运行结果:



知识点整合:

OpenGL头文件:

几乎每个OpenGL源文件都以下述代码打头:#include<GL/gl.h>#include<GL/glu.h>


窗口管理:

1glutInit(int *argc,char***argv):初始化GLUT并处理命令行参数。

2glutInitDisplayMode(usigned int mode):制定使用的模式。例:GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH

3glutInitWindowSize(intwidth,int size):指定窗口大小。

4glutInitWindowPostion(int x,int y):指定窗口左上角在屏幕上的位置。

5glutCreateWindow(char*string):创建窗口,string为一串字符串,是该窗口的名字。显示回调函数:glutDisplayFunc(void(*func)(void)):括号中放一个返回值为void的函数的名称,每次重绘场景时都会调用。


运行程序:

glutMainLoop(void):调用此函数时创建的所有窗口及窗口中的内容都将显示出来。

0 0