图解VC++ opengl环境配置和几个入门样例
VC6下载
http://blog.csdn.net/bcbobo21cn/article/details/44200205
demoproject和glut库下载
http://pan.baidu.com/s/1pLSpKiZ
一 环境配置
參阅
http://blog.itpub.net/17267437/viewspace-545635/
解压glut库
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
拷贝glut.h到例如以下文件夹;
拷贝图1的两个lib到例如以下文件夹。
拷贝图1的两个dll到例如以下文件夹(偶是64位系统)。
project设置加入四个lib
二样例1
#include <GL/glut.h>
#include <math.h>
const int n = 200;
const GLfloat R = 0.5f;
const GLfloat Pi = 3.1415926536f;
void myDisplay(void)
{
int i;
// 画一个绿色正方形
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,1.0f,0.0f);
glRectf(-0.5f, 0.4f, 0.0f, 0.9f); //画一个绿色的正方形
//glFlush();
//glClearColor(0.0,0.0,0.0,0.0);
//glClear(GL_COLOR_BUFFER_BIT);
glColor4f(1.0,0.0,0.0,1.0); // set the quad color
glBegin(GL_QUADS);
glVertex3f(-0.2,-0.2,0.0);
glVertex3f(0.2,-0.2,0.0);
glVertex3f(0.2,0.2,0.0);
glVertex3f(-0.2,0.2,0.0);
glEnd();
glColor4f(1.0,0.0,0.0,1.0); // set the point color
glPointSize(10);
glBegin(GL_POINTS);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,-0.5,0.0);
glVertex3f(0.5,0.5,0.0);
glVertex3f(-0.5,0.5,0.0);
glEnd();
glColor4f(1.0,0.0,0.0,1.0); // set the line color
glLineWidth(5);
glBegin(GL_LINES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,-0.5,0.0);
glVertex3f(0.5,0.5,0.0);
glVertex3f(-0.5,0.5,0.0);
glEnd();
/*glBegin(GL_POLYGON);
for(i=0; i<n; ++i)
glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
glEnd();*/
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 0);
glutInitWindowSize(1024, 768);
glutCreateWindow("OpenGL基本绘制");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
网上说要改下图的_CONSOLE,我没改也能在开发环境下执行。
三 样例2
#include <GL/glut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
四 样例3
#include <GL/glut.h>
//Called to draw scene
void RenderSence(void)
{
//Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT);
//Flush drawing commands
glFlush();
}
//Set up the rendering state
void SetupRC(void)
{
glClearColor(0.0f,0.0f,1.0f,1.0f); //此时背景色为蓝色
}
int main(int argc, char *argv[])
{
//glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("Simple"); //窗体名为“Simple”
glutDisplayFunc(RenderSence);
SetupRC();
glutMainLoop();
return 0;
}
编译,出现一堆下述错误;
demo4.cpp
y:\dddd10\vc6opengldemo\demo4\demo4.cpp(5) : error C2018: unknown character '0xa1'
y:\dddd10\vc6opengldemo\demo4\demo4.cpp(5) : error C2018: unknown character '0xa1'
y:\dddd10\vc6opengldemo\demo4\demo4.cpp(10) : error C2018: unknown character '0xa1'
......
是由于代码中包括全角字符;寻找发现该全角字符是空格;用替换功能,把全角空格所有替换为半角空格再编译就可以;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
五 样例4
#include <GL/glut.h>
void background(void)
{
glClearColor(0.0,0.0,0.0,0.0);//设置背景颜色为黑色
}
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);//buffer设置为颜色可写
glBegin(GL_TRIANGLES);//開始画三角形
glShadeModel(GL_SMOOTH);//设置为光滑明暗模式
glColor3f(1.0,0.0,0.0);//设置第一个顶点为红色
glVertex2f(-1.0,-1.0);//设置第一个顶点的坐标为(-1.0,-1.0)
glColor3f(0.0,1.0,0.0);//设置第二个顶点为绿色
glVertex2f(0.0,-1.0);//设置第二个顶点的坐标为(0.0,-1.0)
glColor3f(0.0,0.0,1.0);//设置第三个顶点为蓝色
glVertex2f(-0.5,1.0);//设置第三个顶点的坐标为(-0.5。1.0)
glEnd();//三角形结束
glFlush();//强制OpenGL函数在有限时间内执行
}
void myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);//设置视口
glMatrixMode(GL_PROJECTION);//指明当前矩阵为GL_PROJECTION
glLoadIdentity();//将当前矩阵置换为单位阵
if(w <= h)
gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);//定义二维正视投影矩阵
else
gluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);
glMatrixMode(GL_MODELVIEW);//指明当前矩阵为GL_MODELVIEW
}
int main(int argc,char ** argv)
{
/*初始化*/
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(200,200);
/*创建窗体*/
glutCreateWindow("Triangle");
/*绘制与显示*/
background();
glutReshapeFunc(myReshape);
glutDisplayFunc(myDisplay);
glutMainLoop();
return(0);
}
六 opengl资源链接
http://www.cnblogs.com/phinecos/category/90224.html
基于MFC的opengl编程
图解VC++ opengl环境配置和几个入门样例的更多相关文章
- Spring Boot入门样例-001-Java和Maven安装配置
Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...
- OpenGL: 环境配置和图元的绘制
前言 距离上一篇博客已经过去一个半月了,这段时间过得确实充实,虽然一大段时间泡在图书馆复习,但至少也能学到点东西.跨年晚和元旦一整天,全身心投入图形学小课设的编程,终于实现了老师要求的所有功能,回想起 ...
- VS2010/VS2012/VS2015下openGL环境配置(转)
按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...
- 64 计算机图形学入门(1)——OpenGL环境配置与图形流水线(图像管线)
0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一 ...
- 关于MFC OpenGL环境配置的一点总结
复制include时要小心..看vs给你load哪一个..名字一样..东西可不一定一样哦 http://www.cppblog.com/wicbnu/archive/2010/09/30/128123 ...
- zzw原创_ipv6下环境配置防火墙及FTP处理一例
缘由:公司这段时间要将原IPV4地址切换到IPV6,在环境配置的过程中,碰到一坑,平时不太注意的问题,在IPV6下却放大了 实现目标:在IPV6下,机器A可以FTP到机器B,可以传输.下载文件 A机器 ...
- 【OpenGL 学习笔记01】HelloWorld演示样例
<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比較踏实,哈哈. 我的主题是,好记性不如烂笔头. ========== ...
- Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)
为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...
- Mac CLion下OpenGL环境配置
1. 配置glew和glfw 终端下运行下面两句,安装完后在/usr/local/Cellar/下可以找到对应的目录. brew install glew brew install glfw3 效果如 ...
随机推荐
- Android UI布局之LinearLayout
LinearLayout是Android中最经常使用的布局之中的一个.它将自己包括的子元素依照一个方向进行排列.方向有两种,水平或者竖直.这个方向能够通过设置android:orientation=& ...
- 《精通Oracle SQL(第2版) 》
<精通Oracle SQL(第2版) > 基本信息 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsud ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Android Studio快捷键之代码提示
相信很多人在用Eclipse的时候,很习惯的都会把Content Assist设置成.abcd...z,这样每次敲代码的时候都会有自动提示,写起代码来很方便.具体设置如图: 同时,Eclipse中也有 ...
- [转]Linux awk 命令 说明
From : http://blog.csdn.net/tianlesoftware/article/details/6278273 一. AWK 说明 awk是一种编程语言,用于在linux/un ...
- Error: MDM failed command. Status: Only a single SDC may be mapped to this volume at a time
映射一个volume到多个SDC的时候报错如下: Error: MDM failed command. Status: Only a single SDC may be mapped to this ...
- iOS开发-Certificates、Identifiers和Profiles详解
如果是才进入公司进行开发的iOS程序猿来说人难免会对苹果的证书.配置文件,尤其有的需要重头开始的公司来说,最简单的来说真机调试是免不了和这些东西打交道的,有的时候赶时间做完了可能心里也犯嘀咕,本文根据 ...
- iOS开发-Bug锦囊
duplicate symbols for architecture armv7 今天修改了自己项目的部分代码,发现XCode编译的时候报错:duplicate symbols for archite ...
- vue按需引入echarts
下载安装echarts包:npm install echarts -D 一.全局引入 main.js中配置 import echarts from 'echarts' //引入echarts Vue. ...
- Android -- Drag&&Drop
Android3.0提供了drag/drop框架,利用此框架可以实现使用拖放手势将一个view拖放到当前布局中的另外一个view中. 实现拖放的步骤 首先,我们先了解一下拖放过程,从官方文档可以知道, ...