OpenGL入门笔记(十)

简介:
要使用GLUT库,要将glut32.lib放到VC98\Lib下,将glut.h放到VC98\Include\GL下,并在程序中包含进glut.h。
#include <GL\glut.h>
#include <stdlib.h>

GLfloat point1[] = {0.25,0.25,0.0};
GLfloat point2[] = {0.75,0.25,0.0};
GLfloat point3[] = {0.75,0.75,0.0};
GLfloat point4[] = {0.25,0.75,0.0};
GLfloat point5[] = {0.3,0.45,0.0};
GLfloat point6[] = {0.5f,0.5f,0.0f};

void init(void)
{//初始化OpenGL参数
    glClearColor(0.0,0.0,0.0,0.0);//设置清空颜色
    glShadeModel(GL_FLAT);//设置阴影模式
    glLineWidth(2.0);
    glLineStipple(1,0xCCFC);
    glEnable(GL_LINE_STIPPLE);
}

void DrawPoint(void)
{//画点
    glColor3f(0.0f,0.0f,1.0f);
    glPointSize(10.0);
    glBegin(GL_POINTS);
        glVertex3fv(point6);
    glEnd();
}

void DrawPolyGon(void)
{//画正方形

    glColor3f(0.3f,0.2f,0.0f);//设置绘制颜色

    glBegin(GL_POLYGON);//绘制正方形
        glVertex3fv(point1);
        glVertex3fv(point2);
        glVertex3fv(point3);
        glVertex3fv(point4);
    glEnd();
}

void DrawLines(void)
{//画直线
    glColor3f(0.0f,1.0f,0.0f);


    glBegin(GL_LINES);
        glVertex3fv(point1);
        glVertex3fv(point3);
        glVertex3fv(point2);
        glVertex3fv(point4);
    glEnd();
}

void DrawTriangle(void)
{//画三角形
    glColor3f(0.0f,1.0f,0.0f);

    glBegin(GL_TRIANGLES);
        glVertex3fv(point1);
        glVertex3fv(point5);
        glVertex3fv(point6);
    glEnd();
}

void DrawLinesStrip(void)
{
    glColor3f(1.0f,1.0f,1.0f);


    glBegin(GL_LINE_STRIP);
        glVertex3fv(point1);
        glVertex3fv(point3);
        glVertex3fv(point5);
        glVertex3fv(point2);
        glVertex3fv(point4);

    glEnd();
}

void DrawLineLoop(void)
{
    glColor3f(1.0f,1.0f,1.0f);

    glBegin(GL_LINE_LOOP);
        glVertex3fv(point1);
        glVertex3fv(point3);
        glVertex3fv(point5);
        glVertex3fv(point2);
        glVertex3fv(point4);

    glEnd();
}

void display(void)
{//绘制函数
    glClear(GL_COLOR_BUFFER_BIT);//清空缓存
    DrawPolyGon();
    DrawPoint();
    DrawTriangle();
    DrawLines();
    DrawLinesStrip();
    DrawLineLoop();
    glutSwapBuffers();//交换缓存
}

void reshape(int w,int h)
{//重画函数,初次绘制,移动窗口或改变窗口大小时调用
    glViewport(0,0,(GLsizei)w,(GLsizei)h);//视口变换
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
//    glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);//投影变换
    gluOrtho2D(0.0f,1.0f,0.0f,1.0f);
    glMatrixMode(GL_MODELVIEW);//开始模型视图变换
    glLoadIdentity();
}

int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);//设置显示模式为"双缓冲,RGB"
    glutInitWindowPosition(100,100);//窗口左上角在(100,100);
    glutInitWindowSize(500,400);//窗口大小为宽500,高400
    glutCreateWindow("Hello OpenGL");//创建窗口,标题为"Hello OpenGL"
    init();//初始化OpenGL参数
    glutDisplayFunc(display);//注册显示回调函数
    glutReshapeFunc(reshape);//注册重画函数
    glutMainLoop();
    return 0;
}



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2007/04/26/728849.html,如需转载请自行联系原作者
目录
相关文章
|
vr&ar Android开发 C++
Android OpenGL入门
Android OpenGL入门
Android OpenGL入门
|
存储 缓存 安全
OpenGL ES 入门:GLKit加载图片
OpenGL ES 入门:GLKit加载图片
148 0
OpenGL ES 入门:GLKit加载图片
|
存储 缓存
案例 02、OpenGL入门--正方形键位控制
OpenGL入门--正方形键位控制
127 0
案例 02、OpenGL入门--正方形键位控制
|
缓存 容器
案例 01、OpenGL入门--绘制三角形
OpenGL中三角形的绘制,就类似于学习编程时的Hello world,是一个入门级的使用,重点在于理解图形是如何绘制的
227 0
案例 01、OpenGL入门--绘制三角形
|
C++ 异构计算 Python
OpenGL渲染入门
## 前言 在开始之前,先来看一段图像解码序列(格式为YUV420)的4个渲染结果,这里我分别截了4张图 ![image.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/dca46d1be7dfee07981a7dea14ae3aa1.png) 其中4个渲染效果分别是 左上:直接渲染视频帧并绘制到窗口上 右上:
1753 0
|
API
OpenGL ES 入门API大全
本文章正确使用姿势:command/Ctrl + f  进行搜索对应的功能代码,找到它的详细解释。 (以下内容如有偏差,欢迎进行指正) 一.CAEAGLLayer 的使用: CAEAGLLayer 官方解释如图CAEAGLLayer,我来简单翻译一下: CAEAGLLayer 是继承于CALayer 的,可以用它在iOS 和tvOS 的设备上使用。
1432 0