第01课 OpenGL窗口(4)】的更多相关文章

下面的代码处理所有的窗口消息.当我们注册好窗口类之后,程序跳转到这部分代码处理窗口消息. LRESULT CALLBACK WndProc( HWND hWnd, // 窗口的句柄 UINT uMsg, // 窗口的消息 WPARAM wParam, // 附加的消息内容 LPARAM lParam) // 附加的消息内容 { 下面的代码比对uMsg的值,然后转入case处理,uMsg 中保存了我们要处理的消息名字. switch (uMsg) // 检查Windows消息 { 如果uMsg等于…
接下来的代码段创建我们的OpenGL窗口.我花了很多时间来做决定是否创建固定的全屏模式这样不需要许多额外的代码,还是创建一个容易定制的友好的窗口但需要更多的代码.当然最后我选择了后者.我经常在EMail中收到诸如此类的问题:怎样创建窗口而不使用全屏幕?怎样改变窗口的标题栏?怎样改变窗口的分辨率或pixel format(象素格式)?以下的代码完成了所有这一切!尽管最好要学学材质,这会让您写自己的OpenGL程序变得容易的多! 正如您所见,此过程返回布尔变量(TRUE 或 FALSE).他还带有5…
教程的这一节在2000年一月彻底重写了一遍.将会教您如何设置一个 OpenGL窗口.它可以只是一个窗口或是全屏幕的.可以任意 大小.任意色彩深度.此处的代码很稳定且很强大,您可以在您所有的OpenGL项目中使用.我所有的教程都将基于此节的代码!所有的错误都有被报告.所以应该没有内存泄漏,代码也很容易阅读和修改.感谢Fredric Echols对代码所做的修改! 现在就让我们直接从代码开始吧.第一件事是打开VC然后创建一个新工程.如果您不知道如何创建的话,您也许不该学习OpenGL,而应该先学学V…
下一段包括了所有的绘图代码.任何您所想在屏幕上显示的东东都将在此段代码中出现.以后的每个教程中我都会在例程的此处增加新的代码.如果您对OpenGL已经有所了解的话,您可以在 glLoadIdentity()调用之后,返回TRUE值之前,试着添加一些OpenGL代码来创建基本的形.如果您是OpenGL新手,等着我的下个教程.目前我们所作的全部就是将屏幕清除成我们前面所决定的颜色,清除深度缓存并且重置场景.我们仍没有绘制任何东东. 返回TRUE值告知我们的程序没有出现问题.如果您希望程序因为某些原因…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第一课:OpenGL窗口 创建一个OpenGL窗口: 在这个教程里,我将教你在Windows环境中创建OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 理解O…
不要用那个nehe ndk了 误人子弟! 转自: 一个窗口,代码可真多啊 http://www.yakergong.net/nehe/ 在这个教程里,我将教你在Windows环境中创建OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 现在就让我们直接从代码开始吧.第一件事是打开VC然后创建一个新工程.如果您不知道如何创建的话,您也许不该学习OpenGL,而应该先学学VC.某些版本的VC需要将 bool 改成 BOOL ,…
3D空间中移动图像: 你想知道如何在3D空间中移动物体,你想知道如何在屏幕上绘制一个图像,而让图像的背景色变为透明,你希望有一个简单的动画.这一课将教会你所有的一切.前面的课程涵盖了基础的OpenGL,每一课都是在前一课的基础上创建的.这一课是前面几课知识的综合,当你学习这课时,请确保你已经掌握了前面几课的知识. 欢迎进入第九课.到现在为止,您应该很好的理解OpenGL了.『CKER:如果没有的话,一定是我翻译的罪过......』.您已经学会了设置一个OpenGL窗口的每个细节.学会在旋转的物体…
旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 上一课中我教给您三角形和四边形的着色.这一课我将教您如何将这些彩色对象绕着坐标轴旋转.其实只需在上节课的代码上增加几行就可以了.下面我将整个例程重写一遍.方便您知道增加了什么,修改了什么.我们增加两个变量来控制这两个对象的旋转.这两个变量加在程序的开始处其他变量的后面( bool fullscreen=TRUE;下面的两行).它们是浮点类型的变量,使得我们能够非常精确地旋转对象.浮点数包含小数位…
添加颜色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在下图中,三角形用的是光滑着色,四边形用的是平面着色 上一课中我教给您三角形和四边形的绘制方法.这一课我将教您给三角形和四边形添加2种不同类型的着色方法.使用Flat coloring(单调着色)给四边形涂上固定的一种颜色.使用Smooth coloring(平滑着色)将三角形的三个顶点的不同颜色混合在一起,创建漂亮的色彩混合. 继续在上节课的DrawGLScene例程上修改.下面将整个例程重写了一遍.如果您计划修改上节课…
你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形.读完了这一课,你会学到如何在空间放置模型,并且会知道深度缓存的概念. 第一课中,我教您如何创建一个OpenGL窗口.这一课中,我将教您如何创建三角形和四边形.我们讲使用来创建GL_TRIANGLES一个三角形,GL_QUADS来创建一个四边形. 在第一课代码的基础上,我们只需在DrawGLScene()过程中增加代…
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51295663 在博主的上一篇文章中已经介绍了OpenGL开发环境的搭建,本篇博文将验证开发环境是否搭建成功.同时,也是迈出OpenGL开发的第一步.我们使用上一篇文章中新建的项目,创建一个OpenGL窗口. 添加头文件display.h. #include <SDL2\SDL.h> #include <string> class Display { publ…
问题为:背景界面是一个OpenGL窗口(对话框),在其上弹出一个OpenGL窗口(模态对话框)时, 1.上方的OpenGL窗口能响应鼠标操作等并刷新: 2.当移动或放大缩小上方的OpenGL窗口时,其中的模型就不会响应鼠标操作. 因为之前的程序是单对话框的,所以放大.移动等没有问题,现在变成多OpenGL窗口显示就出现问题了.网上查询得知,OpenGL 绘图的机制是:先用 OpenGL 的绘图上下文 Rendering Context (简称为 RC )把图画好,再把所绘结果通过 SwapBuf…
原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题…
通常的增强现实应用需要支持OpenGL的OpenCV来对真实场景进行渲染.从2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL.这意味着在OpenCV中可轻松渲染任何3D内容. 若要在OpenCV中开始一个OpenGL窗口,需要做的第一件事是生成支持OpenGL的OpenCV. 在cmake的时候,应该设置标志: cmake -D ENABLE_OPENGL=YES 如果现在有一个支持OpenGL的OpenCV库,可用其创建第一个OpenGL窗口.OpenGL窗口的初始化由创建一个命…
虽然MFC已经落伍好多年,而且用来做界面非常的不好用...但是我既不会C#也不会QT,又需要使用OpenGL,就只能将就用了...   一.首先介绍Windows图像程序设计中几个重要的概念:   GDI(Graphics Device Interface,图形设备接口):这是Windows API的一个库.当Windows应用程序需要显示点.线.图像.文字等内容,在显示器或打印输入这些内容时,就需要用到GDI.Windows应用程序不能直接操作系统的硬件(比如显卡),GDI就为应用程序提供了相…
   原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每课教程的最后面提供了不同的代码版本下载,更完整的全套教程源代码可以一次性从NeHe OpenGl代码合集(包括VC.C#.JAVA各种版本)下载. 第一课的 VC++ Win32项目源代码如下:(注意:需要在VC++的IDE如VS2008中创建一个Win32 Project类型的项目,而不是一个Wi…
在上节课Windows10+VS2017 用GLFW+GLAD 搭建OpenGL开发环境 中,我们搭建好了OpenGL开发环境.这节课编写代码去测试开发环境. 还是用上节课创建的OpenGL项目,右击源文件->添加新建项CreateWindow.cpp. 编写代码: #include <glad/glad.h> //GLAD的头文件包含了正确的OpenGL头文件(例如GL/gl.h),所以需要在其它依赖于OpenGL的头文件之前包含GLAD.#include <GLFW/glfw3…
下一段代码绘制贴图立方体.我只对新增的代码进行注解.如果您对没有注解的代码有疑问,回头看看第六课. int DrawGLScene(GLvoid) // 从这里开始进行所有的绘制 { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存 glLoadIdentity(); // 重置当前的模型观察矩阵 下三行代码放置并旋转贴图立方体.glTranslatef(0.0f,0.0f,z)将立方体沿着Z轴移动Z单位.glRot…
纹理映射: 在这一课里,我将教会你如何把纹理映射到立方体的六个面. 学习 texture map 纹理映射(贴图)有很多好处.比方说您想让一颗导弹飞过屏幕.根据前几课的知识,我们最可行的办法可能是很多个多边形来构建导弹的轮廓并加上有趣的颜色.使用纹理映射,您可以使用真实的导弹图像并让它飞过屏幕.您觉得哪个更好看?照片还是一大堆三角形和四边形?使用纹理映射的好处还不止是更好看,而且您的程序运行会更快.导弹贴图可能只是一个飞过窗口的四边形.一个由多边形构建而来的导弹却很可能包括成百上千的多边形.很显…
1. 什么是opengl: opengl是图形硬件的一种软件接口. 2. opengl对场景中的图像进行渲染时所执行的主要图形操作 1)根据几何图元创建形状,从而建立物体的数学描述. 2)在三维空间中排列物体,并选择观察复合场景的有利视角. 3)计算所有物体的颜色.(ps:可以使用着色器或者opengl与编程算法执行, opengl预编程算法又被称为固定功能的管线) 4)把物体的数学描述以及与物体相关的颜色信息转换为屏幕上的像素.这个过程称为光栅化rasterization. 3. 几个术语:…
步骤: 1.创建windows窗口,得到窗口句柄hwnd 2.获取该窗口的设备环境hDC(当然也可以获取其他的设备环境,但我们一般是在创建的窗口上绘制) 3.创建OpenGL绘制环境RC,这个只能从hDC创建 4.将hDC和RC绑定到当前的线程 注:RC表示OpenGL的绘制环境,所有的OpenGL命令都会在RC这个绘制环境中作用,所以必须在RC绑定到当前线程之后才能调用OpenGL命令,否则运行出错,内存访问错误. 一般的笔刷绘制,在hDC下即可. 封装的窗口类如下: GLWindow.h #…
转自https://blog.csdn.net/niusiqiang/article/details/43116153 虽然启用了双缓冲,但是仍然会出闪屏的情况,这是由于OpenGL自己有刷新背景的函数glClear,故而应禁止Windows刷新窗口背景.否则,当窗口需要重画时,Windows会自动先发送WM_ERASEBKGND,而缺省的处理函数使用白色的背景刷.当OpenGL使用的背景颜色不是白色时,作图时有一帧白色的闪烁.这种现象在做动画时特别明显. 因此,网上所说的配置步骤还少了一部,应…
显示列表: 想知道如何加速你的OpenGL程序么?这一课将告诉你如何使用OpenGL的显示列表,它通过预编译OpenGL命令来加速你的程序,并可以为你省去很多重复的代码. 这次我将教你如何使用显示列表,显示列表将加快程序的速度,而且可以减少代码的长度. 当你在制作游戏里的小行星场景时,每一层上至少需要两个行星,你可以用OpenGL中的多边形来构造每一个行星.聪明点的做法是做一个循环,每个循环画出行星的一个面,最终你用几十条语句画出了一个行星.每次把行星画到屏幕上都是很困难的.当你面临更复杂的物体…
飘动的旗帜: 这一课从第六课的代码开始,创建一个飘动的旗帜.我相信在这课结束的时候,你可以掌握纹理映射和混合操作. 大家好!对那些想知道我在这里作了些什么的朋友,您可以先按文章的末尾所列出的链接,下载我那毫无意义的演示(Demo)看看先!我是bosco,我将尽我所能教您来实现一个以正弦波方式运动的图象.这一课基于NeHe的教程第六课,当然您至少也应该学会了一至六课的知识.您需要下载源码压缩包,并将压缩包内带的data目录连其下的位图一起释放至您的代码目录下.或者使用您自己的位图,当然它的尺寸必须…
加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游.这一课使用第一课的代码,当然在课程说明中我只介绍改变了代码. 这一课是由Lionel Brits (βtelgeuse)所写的.在本课中我们只对增加的代码做解释.当然只添加课程中所写的代码,程序是不会运行的.如果您有兴趣知道下面的每一行代码是如何运行的话,请下载完整的源码,并在浏览这一课的同时,对源码进行跟踪.好了现在欢迎来到名不见经传的第十课.到现在为止,您应该有能力创建一个旋转的立方体或一群星星了,对3D…
混合: 在这一课里,我们在纹理的基础上加上了混合,它看起具有透明的效果,当然解释它不是那么容易,当希望你喜欢它. 简单的透明OpenGL中的绝大多数特效都与某些类型的(色彩)混合有关.混色的定义为,将某个象素的颜色和已绘制在屏幕上与其对应的象素颜色相互结合.至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的混色函数.Alpha通常是位于颜色值末尾的第4个颜色组成分量.前面这些课我们都是用GL_RGB来指定颜色的三个分量.相应的GL_RGBA可以指定alpha分量的值.…
光照和键盘控制: 在这一课里,我们将添加光照和键盘控制,它让程序看起来更美观. 这一课我会教您如何使用三种不同的纹理滤波方式.教您如何使用键盘来移动场景中的对象,还会教您在OpenGL场景中应用简单的光照.这一课包含了很多内容,如果您对前面的课程有疑问的话,先回头复习一下.进入后面的代码之前,很好的理解基础知识十分重要.我们还是在第一课的代码上加以修改.跟以前不一样的是,只要有任何大的改动,我都会写出整段代码.程序开始,我们先加上几个新的变量. 下面几行是新的.我们增加三个布尔变量. light…
3D空间: 我们使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体. 在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D世界中的2D对象.我们给三角形增加一个左侧面,一个右侧面,一个后侧面来生成一个金字塔(四棱锥).给正方形增加左.右.上.下及背面生成一个立方体. 我们混合金字塔上的颜色,创建一个平滑着色的对象.给立方体的每一面则来个不同的颜色. int DrawGLScene(GLvoid) // 此过程中包括所有…
系列文章目录 第一章:武装飞船 01:创建Pygame窗口以及响应用户输入 02:创建设置类Setting() 一.前期准备 1.语言版本 Python3.9.0 2.编译器 Pycharm2022 3.下载Pygame 点击下方链接查看B站下载教程 如何在 Windows 给 Python 安装 Pygame 模块(含Pycharm安装模块方法) 1.点击文件后找到设置并点击 2.找到项目:下的Python解释器并点击 3.点击+号搜索pygame并安装软件包 二.代码及演示 1.创建Pyga…
1. 新增 windows 窗体时,选 Ribbon Form 2. 窗体继承 Office2007RibbonForm 3. 设计窗口下面,删除 删除styleManager1  组件 窗口效果如下:…