OpenGL
whucv
C#、WCF、并行编程
三维建模与图形图像处理(OpenGL/OSG)、VC/MFC
superliuwhu@126.com
展开
-
OpenGL橡皮筋技术与拾取技术的实现
计算机图形学课程链接3.4橡皮筋技术基于鼠标的实现 1. 鼠标响应函数 MousePlot(GLint button, GLint action, GLint xMouse, GLint yMouse)函数是鼠标响应函数,它包含了四个参数:参数button的取值是GLUT定义的三个鼠标按键符号常量GLUT_LEFT_BUTTON,GLUT_MIDDLE_BUTTON,转载 2012-06-08 21:57:26 · 4536 阅读 · 0 评论 -
gluLookAt和gluPerspective关系——学习OpenGL三维建模前必读④
一般来说,建模时采用建模坐标系,然后在绘制的时候,先把建模坐标系转换到世界坐标系.opengl的坐标系, Z的正方向指向屏幕外的(属于右手坐标系),X的正方向指向右, Y的正方向指向上. 我们假设在前面某个点(0,10,-10) 放置了一个茶杯. 我们这样把这个茶杯显示在屏幕上呢? 如果是二维的开发,我们估计直接把茶杯的图片显示出来,而现在在三维上,我们是用相机来拍照,场景里面就不原创 2012-11-05 22:32:38 · 2530 阅读 · 3 评论 -
ArchieOpenGL基础教程第五课:搭建OpenGL基本框架③添加三维图元显示
点击打开链接补充:基本框架添加成员变量初始化代码COpenglbaseView::COpenglbaseView(){ // TODO: add construction code here m_hRC=NULL; m_pDC=NULL;}关闭纹理映射否则不能显示三维图元。因为这里我们没有用到纹理,所以把初始化中的启用纹理映射函数注释掉BOOL COpe原创 2012-11-05 22:49:13 · 1609 阅读 · 0 评论 -
ArchieOpenGL基础教程第二课:搭建OpenGL框架② 添加全屏控制
要实现的功能:选择菜单“View\Full Screen”,即可进入全屏显示状态,按“Esc”键后会退出全屏显示状态。 在VC++6.0中我们用AppWizard按默认方式生成单文档界面的应用程序框架。OpenGL基本二维空间显示参照前述。1、菜单项“View\Full Screen”实现全屏显示①在CMainFrame类中,增加如下三个成员变量private:原创 2012-11-04 19:33:52 · 1373 阅读 · 0 评论 -
ArchieOpenGL基础教程第三课:glViewport()函数和glOrtho()函数的理解——学习OpenGL三维建模前必读
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho。glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是 图1OpenGL负责的。在默认情况下,视口被设置为占原创 2012-11-06 10:33:01 · 1959 阅读 · 0 评论 -
ArchieOpenGL教程第六课:对OpenGL进行设置
对OpenGL进行所有的设置。我们将设置清除屏幕所用的颜色,打开深度缓存,启用smooth shading(阴影平滑)等等。这个例程直到OpenGL窗口创建之后才会被调用。void COpenglbaseView::myInit(){ //置黑背景 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 黑色背景 glEnable(GL_DEPTH_原创 2012-11-09 15:15:37 · 948 阅读 · 0 评论 -
ArchieOpenGL基础教程第八课:创建3D图形和纹理映射(MFC/SDI)
参考Nehe教程05、06课点击打开链接绘制3D对象在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D世界中的2D对象。我们给三角形增加一个左侧面,一个右侧面,一个后侧面来生成一个金字塔(四棱锥)。给正方形增加左、右、上、下及背面生成一个立方体。我们混合金字塔上的颜色,创建一个平滑着色的对象。给立方体的每一面则来个不同的颜色。BOOL COpe原创 2012-11-09 22:37:57 · 1514 阅读 · 0 评论 -
ArchieOpenGL基础教程第七课:坐标变换
1、变换种类OpenGL提供了计算机图形学中最基本的三维变换,包括:视点变换(gluLookAt)、模型变换、投影变换、剪取变换(附加裁剪面)和视口变换等,同时提供了特殊的变换和用法,如矩阵堆栈。视点变换(gluLookAt):通过改变相机的方向和位置,可以改变出现在取景器中的景物,而景物在世界坐标系中并不发生变化。模型变换:简单的改变被摄物体在取景器中的位置。投影变换:使原创 2012-11-09 18:55:22 · 1458 阅读 · 0 评论 -
ArchieOpenGL基础教程第九课:光照和键盘
参考Nehe教程第7课在上节基础上继续。-----------------------------------------------------这一课我会教您如何使用三种不同的纹理滤波方式。教您如何使用键盘来移动场景中的对象,还会教您在OpenGL场景中应用简单的光照。这一课包含了很多内容,如果您对前面的课程有疑问的话,先回头复习一下。进入后面的代码之前,很好的理解基础知识十分重要。原创 2012-11-10 17:02:38 · 922 阅读 · 0 评论 -
ArchieOpenGL第十课:3D世界漫游
参考:nehe中文第十课在第九课基础上继续------------------------------------------------数据结构当您想要使用一系列的数字来完美的表达3D环境时,随着环境复杂度的上升,这个工作的难度也会随之上升。出于这个原因,我们必须将数据归类,使其具有更多的可操作性风格。在程序清单头部出现了sector(区段)的定义。每个3D世界基本上可以看作是s原创 2012-11-11 22:39:44 · 1253 阅读 · 0 评论 -
ArchieOpenGL教程扩展一:修改背景色颜色
默认背景为黑色,是不是有点单调,你可以根据兴趣修改自己的背景色在OpenGl初始化代码中myInit修改glClearColor颜色值即可 glClearColor(0.75f, 0.75f, 0.75f, 0.0f); // 银灰色背景 下面是常见的颜色配比值浅粉红 #FFB6C1 255,182,193粉红 #FFC0CB 255,192,203猩红/深红 #DC原创 2012-11-19 15:08:29 · 3208 阅读 · 2 评论 -
选择与反馈
章节目标读完此章之后,你将能够做到:建立允许用户选择(select)屏幕区域或拾取(pick)绘制在屏幕上的物体的应用程序利用OpenGL的反馈(feedback)模式获取绚染计算结果有些图形应用程序只绘制两维和三维物体构成的静态图形,另一些允许用户识别屏幕上的物体并移动、修改、删除或用其它方法操纵这些物体。OpenGL正是设计用于支持这些交互式应用程序的。因为绘制在屏幕上转载 2012-12-21 13:48:59 · 1420 阅读 · 0 评论 -
ArchieOpenGL教程第11课:使用位图字体 在屏幕上显示字体
第十一课A源代码图像字体A:这一课我们将创建一些基于2D图像的字体,它们可以缩放,但不能旋转,并且总是面向前方,但作为基本的显示来说,我想已经够了。使用位图字体比起使用图形字体(贴图)看起来不止强100倍。你可以随时改变显示在屏幕上的文字,而且用不着为它们逐个制作贴图。只需要将文字定位,再使用我最新的gl命令就可以在屏幕上显示文字了。我尽可能试着将命令做的简单。你只需要敲入gl原创 2012-11-14 22:51:45 · 4011 阅读 · 0 评论 -
ArchieOpenGL教程第一课:搭建opengl基本框架(SDI)①
点击打开链接带纹理映射的链接下载1、新建SDI工程2、添加OpenGL库。3、在stdafx.h中添加OpenGL包含头文件4个#include#include#include #include //{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional de原创 2012-11-03 17:37:26 · 1668 阅读 · 0 评论 -
设置投影模式+Nehe第20课掩膜
根据上篇日志建立Opengl框架。欢迎来到第20课的教程,bmp图像被各种操作系统所支持,因为它简单,所以可以很轻松的作为纹理图片加载它。直到现在,我们在把图像加载到屏幕上时没有擦除背景色,因为这样简单高效。但是效果并不总是很好。-------------------------------------------------------------------------------原创 2012-11-03 17:36:34 · 1269 阅读 · 0 评论 -
Nehe第19课 粒子系统
源代码链接#include // Windows的头文件#include // 包含最新的gl.h,glu.h库#include // 包含OpenGL实用库#include // GLaux库的头文件#include // 标准输入/输出库的头文件/***********************************************************原创 2012-10-07 22:33:38 · 2380 阅读 · 0 评论 -
OpenGL鼠标拾取的实现:终于搞定(包括细节问题)
点击打开链接void OpenGL::pickRects(){/* GetCursorPos(&mouse); ScreenToClient(hWnd,&mouse); GLuint pickBuffer [32]; GLint nPicks,vpArray[4]; glRenderMode(GL_SELECT); glSelectBuffer(32,pic转载 2012-06-08 21:50:59 · 5655 阅读 · 1 评论 -
CxImage与OpenGL结合
CxImage与OpenGL结合,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像文件。关于CxImage的文章,网上有许多,这里只介绍如何把CxImage与OpenGL结合起来,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像文件。支持的格式有:BMP,GIF,ICO,JP2,FPC,FPG,PCX,PNG,PNM,RAS,TGA,TIF等等。支持读入透明转载 2012-06-11 17:31:58 · 1091 阅读 · 0 评论 -
OpenGL选择-拾取机制(下)
本篇紧随上篇,探讨一下OpenGL内置的拾取机制,给出一个完整的拾取部分实现代码,请有心人批评指正。前篇是:[乱弹OpenGL选择-拾取机制(上)] ——ZwqXin.com前篇主要讲了名字栈机制,这是拾取机制中对拾取结果进行识别的机制,是后处理的前提。而本篇则从拾取机制的“拾取”部分,揭露一下我所理解的OpenGL内置拾取机制。本文来源于 ZwqXin (http://www.zwqxi转载 2012-06-08 22:01:02 · 1986 阅读 · 0 评论 -
Captain Dialog 2009-09-18 VC+OpenGL实现空间三维Delaunay三角剖分
Captain Dialog 2009-09-18 三维建模和等值面的绘制过程中,需要经常使用三角形网格对数据体进行构面。而三角形的生成基于Delaunay三角剖分的算法实现的。前段时间一直在考虑数据体的任意剖面切割该怎么做,但是一直被两个问题所困扰,一个就是交点问题,然后就是对所求交点进行绘制问题(三角形网格面构造)。终于在半个月后有了一点收获。1 Delaunay三角剖分原理转载 2012-07-17 22:44:30 · 2740 阅读 · 1 评论 -
OpenGL库设置
附以下所有文件下载地址点击打开链接opengl所有的h头文件,dll文件,lib文件,和库文件设置说明,截止2012年7月最新1.7版glew库。头文件gl.h glaux.h glew.h glext.h glu.h glut.h glxew.h glxext.h wglext.hdll文件glew32 glew32mx glmf32 glu32 glut32 ope原创 2012-07-20 19:27:39 · 15076 阅读 · 1 评论 -
Nehe教程第11课飘动的旗帜
点击打开链接#include // Windows的头文件#include // 包含最新的gl.h,glu.h库#include // 包含OpenGL实用库#include // GLaux库的头文件#include // 标准输入/输出库的头文件#include float points[45][45][3]; //Point原创 2012-03-26 21:28:21 · 1582 阅读 · 0 评论 -
Nehe教程第17课2D图像文字
Nehe教程第17课2D图像文字点击打开链接#include // Windows的头文件#include // 包含最新的gl.h,glu.h库#include // 包含OpenGL实用库#include #include //用来定义可变参数的头文件#include //vsprintf#include //sin cosHG原创 2012-03-29 22:45:40 · 1401 阅读 · 0 评论 -
Nehe教程16课雾
雾源程序点击打开链接#include // Windows的头文件#include // 包含最新的gl.h,glu.h库#include // 包含OpenGL实用库#include // GLaux库的头文件#include // 标准输入/输出库的头文件BOOL light=TRUE; //光源开关BOOL lp; //L键按下Pr原创 2012-03-29 22:37:23 · 802 阅读 · 0 评论 -
Nehe第15课图形字体的纹理映射
程序链接wingdings是一种符号字体,使用它时需要做一些改动。告诉Windows使用wingdings字体并不太简单。如果你把字体的名字改为wingdings,你会注意到字体其实并没有选到。你必须告诉Windows这种字体是一种符号字体而不是一种标准字符字体。wglUseFontOutlines(hDC, //设置当前窗口设备描述表句柄 0, //用原创 2012-03-28 21:10:09 · 1072 阅读 · 0 评论 -
Nehe第14课图形字体
图形字体:源代码下载在一课我们将教你绘制3D的图形字体,它们可像一般的3D模型一样被变换。你可以指定轮廓字体的大小。轮廓字体可以在屏幕中以3D方式运动,而且轮廓字体还可以有一定的厚度!而不是平面的2D字符。使用轮廓字体,你可以将你的计算机中的任何字体转换为OpenGL中的3D字体,加上合适的法线,在有光照的时候,字符就会被很好的照亮了。wglUseFontOutlines(hDC,原创 2012-03-28 18:14:55 · 1133 阅读 · 0 评论 -
Nehe教程第一课OpenGL窗口
创建一个新的Win32程序(不是console控制台程序)链接OpenGL库文件。在VC中操作如下:Project-> Settings,然后单击LINK标签。在"Object/Library Modules"选项中的开始处(在 kernel32.lib 前)增加 OpenGL32.lib GLu32.lib 和 GLaux.lib 后单击OK按钮。代码的前4行包括了我们使用的每个库文件的头文原创 2012-02-28 22:52:12 · 798 阅读 · 0 评论 -
NeHe教程第6课纹理映射
程序链接点击打开链接必须启用纹理映射glEnable(GL_TEXTURE_2D);//启用纹理映射AUX_RGBImageRec在glaux.h中声明的/*** RGB Image Structure*/typedef struct _AUX_RGBImageRec { GLint sizeX, sizeY; unsigned char *data;原创 2012-03-18 12:22:06 · 1937 阅读 · 2 评论 -
ArchieOpenGL教程第12课:线,反走样,计时,正投影和简单的声音
直接在第十一课C基础上修改,参考Nehe第21课。本课未完成,请直接跳过在这课的结尾你将获得一个叫"amidar"的游戏,你的任务是走完所有的直线。这个程序有了一个基本游戏的一切要素,关卡,生命值,声音和一个游戏道具。按照惯例,我们只介绍改动的部分。bool类型的变量,bVLine保存了组成我们游戏网格垂直方向上的121条线,上下水平各11条。bHLine保存了水平方向上的 121原创 2012-11-19 22:45:03 · 1348 阅读 · 0 评论