OpenGL
文章平均质量分 78
shifenglv
一个业余的程序员,爱好是写写代码。
展开
-
如何将顶点数据保存为STL文件?
stl 文件是在计算机图形应用系统中,用于表示三角形网格的一种文件格式。 它的文件格式非常简单, 应用很广泛。STL是最多快速模型系统所应用的标准文件类型。STL是用三角网格来表现3D CAD模型。STL只能用来表示封闭的面或者体,stl文件有两种:一种是ASCII明码格式,另一种是二进制格式。一、STL文件的格式(1)ASCII明码格式ASCII码格式的STL文件逐行给出三角面片原创 2017-07-18 15:04:37 · 4751 阅读 · 1 评论 -
使用OpenGL在控制台窗口上绘制图形
以前刚学OpenGL的时候,创建的是控制台工程,运行时有两个窗口,一个用来显示图形,另一个则是多余的控制台,看起来很别扭。我当时在想,既然控制台程序已经提供了窗口,为什么还要自己创建一个呢,难道控制台窗口只能显示冰冷的字符吗?后来自己学会搭建OpenGL渲染环境,才知道其中的奥秘。下面通过一段简短的说明和程序代码来说明如何在控制台窗口上绘图。OpenGL渲染环境的搭建,要注意的事项,跟...原创 2019-05-08 14:40:23 · 2237 阅读 · 1 评论 -
使用OpenGL在电脑屏幕上绘图
学过OpenGL的人都知道,要想利用OpenGL函数进行绘图,就要创建一个显示窗口。每次绘图,第一件事恐怕就是创建窗口了。肯定也有人跟我一样想过:能不能不在那个黑乎乎的窗口上绘图,而是直接绘制在电脑屏幕上,就像桌面上那些图标一样。我曾翻遍了所有的OpenGL函数,没有哪个函数支持这种做法。我想大概是不行的吧,就把在屏幕上绘图的想法给搁置了。直到有一天,我学习了GDI,尝试进行截屏,当...原创 2019-05-08 13:38:33 · 9600 阅读 · 8 评论 -
C#中使用OpenGL:(七)创建OpenGL渲染环境
之前的文章介绍了如何在C#中调用1.1版本的OpenGL函数,但是光有OpenGL函数还不能绘制图形,就像一个画家,他即使拥有绘画的技巧,还有画笔和颜料,如果没有画布,他也没有地方画画。有了画布,画家还需要画板把画布支起来才能画。OpenGL渲染环境就类似于画布和画板,只有创建了渲染环境,使用OpenGL函数才会起作用。它不是OpenGL的一部分,而是隶属于操作系统,所以不同的操作系统,创建Ope原创 2017-12-19 15:18:57 · 15982 阅读 · 9 评论 -
C#中使用OpenGL:(八)OpenGL扩展函数
一般而言,扩展函数指的是没有正式发布但已经存在于显卡驱动中的函数,这里指的是已经正式发布的,但版本号高于1.1的OpenGL函数。前面的文章已经探讨过在C#中使用1.1版本的OpenGL函数,也研究过如何在C#中搭建OpenGL渲染环境。如果对性能没什么要求,也不打算做太复杂的东西,那么前面所做的工作已经够用了。如果想做更酷的东西,那么使用高版本的扩展函数是必不可少的。下面将粗略地说明如何在C#程原创 2018-01-12 21:21:37 · 3224 阅读 · 5 评论 -
C#中使用OpenGL:(五)1.1版本的OpenGL函数
上一篇文章介绍了如何在C#中表示OpenGL常量,这篇文章将介绍如何在C#中调用1.1版本OpenGL函数。关于OpenGL版本的问题OpenGL自从1992年7月份发布1.0版本以来,到2017年9月已经发展到了4.6版本。在OpenGL发展的历程中有两个版本需要特别注意,第一个是1.1版本,第二个是2.1版本。1.1版本的OpenGL是微软Windows系统所支持的最高版本的了,而原创 2017-09-24 13:16:57 · 6170 阅读 · 0 评论 -
C#中使用OpenGL:(四)C#版的OpenGL常量
在使用OpenGL时,经常会用到一些常量,诸如GL_FALSE、GL_BUFFER_BITS之类的。这些常量,在C/C++中,都是在头文件中用宏来声明,编译器在编译时,会把宏替换成实际的数值。如果在C#中使用OpenGL,那么这些常量该如何表示呢?C#不能像C/C++那样通过使用#define来定义宏,那么在C#中如何封装OpenGL几千个常量呢?方法主要有两种,一是用枚举类型(enum)封装原创 2017-08-26 15:58:19 · 9725 阅读 · 4 评论 -
C#中使用OpenGL:(三)将.lib文件编译为.dll文件
C#不能调用C/C++lib文件的函数,但能调用dll文件的函数。可是现在的情况是,我只有一个lib文件,函数的实现都在里边了。能不能把lib变为dll呢?答案是肯定的。 要把lib编译为dll大概有三种方法吧: 第一种,就是把lib的函数封装一下,然后用编译器编译为dll。具体做法就是,先定义一个函数,然后在函数内部引用lib中的函数,最后将函数输出到dll文件中。 例如:void原创 2017-08-18 17:31:02 · 9592 阅读 · 1 评论 -
C#中使用OpenGL:(二)C#调用C/C++的dll
在C#中使用OpenGL图形库为业余的图形编程人员提供了很大的便利,可是官方并没有向用户提供C#版本的OpenGL图形接口,在民间有好一些人开发了C#版的OpenGL接口,使之能够在C#中使用。这些第三方的C#版OpenGL应该说用起来还是不错的,如果说有什么缺点的话,那应该是这些OpenGL的版本都不是最新的,一般在4.0以下,而现在OpenGL都4.6版本了。如果要使用最新的OpenGL图形接原创 2017-08-15 19:59:47 · 16182 阅读 · 3 评论 -
C#中使用OpenGL:(一)前面的话
为什么要在C#中使用OpenGL?OpenGL是非常强大的图形接口,硬件加速,跨平台。。。。总之,很多说不完的优点。对于喜欢图形编程的人来说,最直接的优点就是OpenGL可以做很多酷酷的东西。正是因为如此,包括我在内,很多人都喜欢使用OpenGL开发图形类的程序。OpenGL缺点也是很明显的,对于程序员来说,最直观的缺点就是学起来难,用起来繁。难学只是暂时的,繁琐则是始终的。OpenGL据说是原创 2017-08-12 20:09:35 · 20728 阅读 · 7 评论 -
BMP文件解析
BMP文件简介BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文原创 2017-07-23 17:22:08 · 2195 阅读 · 0 评论 -
如何读取STL文件?
STL文件有两种文件格式,分别是二进制的stl和Ascii格式的stl。下面将针对这文件的两个格式,用C语言分别写出一段简单的示例代码。一、读取二进制的STL文件(1)二进制stl文件的结构文件起始的80个字节是文件头,用于存贮文件名; 紧接着用 4 个字节的整数来描述模型的三角面片个数, 后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是: 3个4字节浮原创 2017-07-19 13:30:20 · 11797 阅读 · 13 评论 -
C#中使用OpenGL:(九)重写C# OpenGL接口
C# OpenGL系列,前面八篇博客在2018年1月份已经完成,基本上是把C# OpenGL接口所涉及的技术大概讲了一下。当时信誓旦旦说要把博客写好,实际上没有做到,有些东西没有讲明白,有些东西是还是错的。另外,博客的行文也不流畅,读起来怪怪的,啰里啰嗦说了很多,但总感觉说不明白。有读者评论说,文章很生动,那真是过奖了。关于源代码的问题,之前的源码上线是很匆忙的,根本没有进行过充分的测试,里面有很...原创 2019-07-28 16:55:48 · 1272 阅读 · 8 评论