`

第一个OpenGL程序

阅读更多
刚开始学习OpenGL,感觉这个挺有趣的(在绘制三维模型时,空间想象能力要求比较高,不然很头疼的)。
新东西,新心情。。。来一发红色三角形。
我就是要通过OpenGL来绘制一个红色的三角形。现在我们来看一下代码:
#include <GL/glut.h>

void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存
glLoadIdentity(); // 重置当前的模型观察矩阵
glTranslatef(0.0f, 0.0f, -5.0f); // 移入屏幕5个单位
glColor3f(1.0f, 0.0f, 0.0f); // 颜色设置为红色
glBegin(GL_TRIANGLES); // 开始绘制三角形
glVertex3f(0.0f, 1.0f, 0.0f);     // 上顶点
glVertex3f(-1.0f, -1.0f, 0.0f);   // 左下顶点
glVertex3f(1.0f, -1.0f, 0.0f);   // 右下顶点
glEnd(); // 结束绘制
glFlush(); // 强制刷新缓冲
}

void initGL()
{
glViewport(0, 0, 300, 300); // 重置当前的视口
glMatrixMode(GL_PROJECTION); // 选择投影矩阵
glLoadIdentity(); // 重置投影矩阵
gluPerspective(45.0f, (GLfloat)300 / (GLfloat)300, 0.1f, 100.0f); // 设置视口的大小
glMatrixMode(GL_MODELVIEW); // 选择模型观察矩阵
glLoadIdentity(); // 重置模型观察矩阵

glShadeModel(GL_SMOOTH); // 平滑投影
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 黑色背景
glClearDepth(1.0f); // 设置深度缓存
glEnable(GL_DEPTH_TEST); // 启用深度测试
glDepthFunc(GL_LEQUAL); // 深度测试类型
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 透视修正
}

int main(int argc, char *argv[])
{
glutInit(&argc, argv); // 初始化GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式(这里是单缓存和RGB颜色模式的窗口)
glutInitWindowSize(300, 300); // 设置窗口大小
glutInitWindowPosition(300, 300); // 设置窗口初始位置
glutCreateWindow("第一个OpenGL程序"); // 创建一个窗口
initGL(); // OpenGL的设置
glutDisplayFunc(display); // 注册一个绘图函数
glutMainLoop(); // 进入GLUT事件处理循环
return 0;
}

关于投影矩阵,深度缓存这些东西,下次更加熟悉之后再写一下。。。
OpenGL源码:http://www.eyesourcecode.com/forum-OpenGL-1.html
1
1
分享到:
评论

相关推荐

    我的第一个OpenGL程序

    我的第一个OpenGL程序,对于初学者来说,是一个很好的入门程序。

    OpenGL第一个程序

    自己调试的第一个OpenGL程序,内含一个立方体旋转示例的VC6.0的工程以及调试程序时包含的头文件glew.h,glut.h。调试方法可以用VC6.0打开工程文件,将压缩包里的.dll文件放在C:WINDOWS和C:WINDOWS\System32的目录...

    OpenGL入门学习之一——编写第一个OpenGL程序

    OpenGL入门学习之一——编写第一个OpenGL程序.pdf 系列教程

    第一个 OpenGL 程序:旋转的立方体(VS2022 / MFC)源码

    这是博文《第一个 OpenGL 程序:旋转的立方体(VS2022 / MFC)》的源码,详细内容见博客文章 https://blog.csdn.net/blackwoodcliff/article/details/132282723

    OpenGL游戏程序设计

    OpenGL程序设计,含有各种示例代码,共有20个示例,第1 章 OpenGL的程序框架__Windows、OpenGL程序框架的建立。 第2 章 OpenGL的基本图形__在OpenGL图形界面上作一些简单的图形。 第3 章 OpenGL的组合图形__用简单...

    NeHe的Opengl教程源程序第一课

    NeHe的Opengl教程源程序第一课 一个简单的OpenGL窗口

    openGL细分程序结构分析与说明

    第一章 细分程序结构分析与说明 第1.1节 三维几何对象的框架结构 第1.2节 整个交互结构

    opengl编程指南第八版第一章的例子程序

    opengl编程指南第八版

    OpenGL实现三维迷宫游戏 源码下载

    设计一个OpenGL程序,创建一个三维迷宫,支持替身通过一定交互手段在迷宫中漫游,基本功能包括:  迷宫应当至少包含10 * 10 个Cell,不能过于简单,下图给出一种示例。  读取给定的替身模型,加载到场景中。  ...

    Touzi.rar_openGL骰子_opengl程序

    本程序是依据网上流传的nehe opengl 教程中第七课的实例进行功能加强的。 保持了源程序的光照(由L键控制),纹理和视角旋转变化(方向键和上下翻建),并贴了六个图,分别表示骰子的六个面。 增加了由回车键控制...

    OpenGL基础图形编程

    第一章OpenGL使人们进入三维图形世界 第二章OpenGL基本理解 第三章Windows NT下的OpenGL函数 第四章OpenGL基本程序结构 第五章OpenGL的数据类型 第六章OpenGL辅助库 第七章OpenGL图元 第八章OpenGL变换 第九章OpenGL...

    学opengl编3D游戏

    A01_OpenGL的程序框架 第1 章源程序 A02_OpenGL的基本图形 第2 章源程序 A03_OpenGL的组合图形 第3 章源程序 A04_摄像漫游 第4 章源程序 A05_开天辟地 第5 章源程序 A06_OpenGL中显示文字 第6 章源程序 A07_特殊的...

    第一个使用VS2012 IDE环境编写的OpenGL应用示例

    这是一个关于OpenGL图形编程的示例程序,可以帮助那些想了解OpenGL图形编程原理的入门示例程序。 前置条件:先阅读压缩包里有一个"Windows 7下OpenGL如何配置"的帮助文档,其中第4个步骤在我的机器上没有,于是使用...

    OpenGL编程指南(第8版 PDF) 中文版 高清晰 最新 完整版 (带目录书签)

    OpenGL编程指南 第8版 高清 中文 完整版,PDF格式的。...1.5 第一个程序:深入分析 10 1.5.1 进入main()函数 10 1.5.2 OpenGL的初始化过程 12 1.5.3 第一次使用OpenGL进行渲染 21 第2章 着色器基础 25 2.1

    OpenGL超级宝典中文第三版带目录清晰扫描版.pdf

    第一部分包括第1章到第12章,介绍经典OpenGL绘图的所有基础知识,包括3D图形和OpenGL简介,OpenGL空间绘图,集合转换,颜色、材料和光照,纹理贴图,曲线和表面,管线交互式图形等内容。第二部分包括第13章到第15章...

    OpenGL 开发教程chm

    chm格式,OpenGL 开发资料汇编,虽然这个教程很小,不过觉得内容挺全的,一共分二大部分:Jeff Molofee的OpenGL教程和OPenGL基础图形编程教程,在Jeff Molofee的OpenGL教程里,你将学习第一个OPENGL三角形的生成、...

    OpenGL编程实例.rar

    图书目录: 第1章 走进三维真彩世界 第2章 OpenGL概述 第3章 极小化OpenGL 第4章 绘制二维图形 第5章 OpenGL变换 第6章 显示列表 第7章 模拟真实世界 第8章 OpenGL动画 第9章 OpenGL图像处理基础 第10章 ...

    c Sharp编写openGL三维演示程序的例子

    这是一个我从nehe网站上下载的例子,演示用C Sharp编写OpenGL程序,没有用任何第三方的dll或控件,对于习惯用vc编写opengl程序的人比较好上手,不过有些函数的参数他里边移到c Sharp后对应的数据类型并不一定就非用...

    OpenGL入门学习

    第一个 OPENGL程序...................................................................................................................4 、OPENGL的优点......................................................

Global site tag (gtag.js) - Google Analytics