博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL初学--环境配置和视景体初步接触
阅读量:5763 次
发布时间:2019-06-18

本文共 2608 字,大约阅读时间需要 8 分钟。

本学期选了门选修计算机图形学,写openGL时暂时没看到啥方便的文档,顺带记一点笔记,平台是Visual studio 2015

OpenGL安装和配置

GLUT3.7下载地址:

这里我是在windows平台下用vs开发工具

点击Other GLUT Information/Downloads的Pre-compiled Win32 for Intel GLUT 3.7 DLLs for Windows 95 & NT

下载好以后解压,里面可以得到5个文件

其中的.h文件放到VS的安装目录下include文件里:

E:\Visual Studio\VC\include

.lib文件放在和include同级的lib目录下:

E:\Visual Studio\VC\lib

dll文件放到C:\Windows\System32下

如果是64位系统的话还要放在C:\Windows\SysWOW64下一份

之后在项目中使用#include<glut.h>导入就可以使用openGL了

OpenGL简单使用

示例代码:

#include
#include
void init();void mydisplay() { glClearColor(0, 255, 0, 0.5); glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, 100, 100); glBegin(GL_POLYGON); glColor3f(1.0, 1.0, 1.0); glVertex2f(-0.5, -0.5); //此处的0.5是相对于视景体而言的,如果视景体是-1到1的话(默认视景体),那么此处 将呈现出一个居中的正方 //但是由于我设置的是glOrtho(0, 1.0, 0, 1.0, -1.0, 1.0);所以此处的正方形会占据左下角的位置 glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); glViewport(0, 0, 100, 50); glBegin(GL_POLYGON); glColor3f(1.0, 0, 1.0); glVertex2f(-0.25, -0.25); glVertex2f(-0.25, 0.25); glVertex2f(0.25, 0.25); glVertex2f(0.25, -0.25); glEnd(); glFlush();} int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); int screen_width = GetSystemMetrics(SM_CXSCREEN); int screen_height = GetSystemMetrics(SM_CYSCREEN); int cw_width = 100; int cw_height = 100; glutInitWindowSize(cw_width, cw_height); glutInitWindowPosition(screen_width/2-cw_width/2, screen_height/2-cw_height/2); glutCreateWindow("Timo"); glutDisplayFunc(mydisplay); init(); glutMainLoop(); }void init() { glClearColor(0, 0, 0, 0.5); glColor3f(1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, 1.0, 0, 1.0, -1.0, 1.0); //glOrtho的作用是设置视景体,可以认为是拍制片时,镜头里能出现的部分。 //我们可以看作使用openGL时我们的创作空间是无限大的,然后glOrtho则是在无限的空间里截取了一部分用于创作, 在前几个参数不设置的情况下,默认截取的区域是x:-1到1 y:-1到1 //gluOrtho2D(-1.0, 1.0, -1.0, 1.0); }

程序运行结果如下:

图片描述

一点笔记

遇到的几个疑惑目前自己得到的答案是:

1.glClearColor和glClear

glClearColor(0, 0, 0, 0.5)的作用是确定用来刷整个背景的颜色和透明度

在运行 glClear(GL_COLOR_BUFFER_BIT);时会执行刷新操作,清除之前的缓存,所以在运行这个函数之后之前的显示都会被覆盖掉

2.glOrtho和glViewport和glutInitWindowSize

把整个空间看作是无限大的风景,glOrtho相当于拍照取景,glViewport相当于把照片按照某个规格拉伸打印,然后用相框框起来放在指定的位置

其中glViewport前两个参数单位都是像素,坐标原点在创建的window的左下角
window可以看坐是一面墙,然后再上面制定位置放了个指定大小的glViewPort相框,再在相框里放了一张照片。照片所展示的风景的区域则取决于视景体的设置

3.glColor3f的使用

我们可以把每一组glBegin和glEnd之间的内容看作一次作画流程,这样的话,glColor3f相当于给这次作画的画笔上色,如果多次上色,那么实际颜色是最后一次上色的结果。

并且在新的作画流程中如果没有进行上色操作,那么实际颜色是上一轮作画时的最后一次上色。

转载地址:http://gawux.baihongyu.com/

你可能感兴趣的文章
Java 栈与堆简介
查看>>
【supervisord】部署单进程服务的利器
查看>>
zabbix oracle监控插件orabbix部署安装
查看>>
python3 通过qq 服务器 发送邮件
查看>>
部署Replica Sets及查看相关配置
查看>>
倒序显示数组(从右往左)
查看>>
文献综述二:UML技术在行业资源平台系统建模中的应用
查看>>
Swift 学习 用 swift 调用 oc
查看>>
第三章 Python 的容器: 列表、元组、字典与集合
查看>>
微信小程序开发 -- 点击右上角实现转发功能
查看>>
[转载]ASP.NET MVC Music Store教程(1):概述和新项目
查看>>
js函数大全
查看>>
Mongodb启动命令mongod参数说明
查看>>
TCP&UDP压力测试工具
查看>>
Android 最简单的自定义Dialog之一
查看>>
磨刀不误砍柴 - 配置适合工作学习的桌面环境
查看>>
redux v3.7.2源码解读与学习之 applyMiddleware
查看>>
【React】为什么我不再使用setState?
查看>>
Git原理与高级使用(3)
查看>>
从JDK源码看Writer
查看>>