摘要: 阅读全文
posted @ 2016-06-04 00:45 BIT祝威 阅读(670) 评论(0) 编辑
摘要: 为了完美解析GLSL源码,获取其中的信息(都有哪些in/out/uniform等),我决定做个GLSL编译器的前端。本文介绍基于虎书实现LALR(1)分析,并生成GLSL编译器前端代码(C#)的过程。阅读全文
posted @ 2016-04-16 00:05 BIT祝威 阅读(603) 评论(4) 编辑
摘要: 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深。本文从下面这个初中学的电路图说起,看看能不能从最初的有一个继电器的电路,画到一个简单的CPU。电路图用multisim12.0绘制,这样就可以看到效果了。阅读全文
posted @ 2014-03-24 16:29 BIT祝威 阅读(20847) 评论(167) 编辑
摘要: 我一直认为,面向对象语言是对面向过程语言的封装。如果是这样,那么就应该能够用C来模拟C#的代码风格,写出面向对象形式的代码。本文逐步展示了与C#对应的C代码是如何实现的。阅读全文
posted @ 2013-10-08 11:14 BIT祝威 阅读(3011) 评论(24) 编辑
摘要: 本文改进了我之前实现的纯C#获取字形贴图的方法。阅读全文
posted @ 2017-04-14 12:56 BIT祝威 阅读(216) 评论(0) 编辑
摘要: Unicode Chart Basic Latin Latin-1 Supplement Latin Extended-A Latin Extended-B IPA Extensions Spacing Modifier Letters Combining Diacritical Marks Gre阅读全文
posted @ 2017-04-13 22:08 BIT祝威 阅读(16) 评论(0) 编辑
摘要: [转]关于OpenGL的绘制上下文 本文转自(http://www.cnblogs.com/Liuwq/p/5444641.html) 什么是绘制上下文(Rendering Context) 初学OpenGL,打开红宝书,会告诉你OpenGL是个状态机,OpenGL采用了客户端-服务器模式,那时觉得阅读全文
posted @ 2017-04-10 21:20 BIT祝威 阅读(58) 评论(0) 编辑
摘要: 这里介绍一个实现半透明渲染效果的方法。此方法极其简单,不拖累渲染速度,但是不能适用所有的情况。阅读全文
posted @ 2017-01-07 19:44 BIT祝威 阅读(191) 评论(0) 编辑
摘要: 本文介绍平行光下是如何实现漫反射和镜面反射的。阅读全文
posted @ 2016-12-01 13:48 BIT祝威 阅读(422) 评论(0) 编辑
摘要: 总的来说,OpenGL应用开发者会遇到为如下三种数据创建Vertex Buffer Object的情形: 任意一个struct类型T data; 任意一个元素类型为struct的数组T[] array; 任意一个非托管数组UnmanagedArray阅读全文
posted @ 2016-11-14 10:16 BIT祝威 阅读(205) 评论(0) 编辑
摘要: 本文介绍了一步到位在GPU端创建buffer并进行初始化的方式。阅读全文
posted @ 2016-11-01 14:12 BIT祝威 阅读(235) 评论(0) 编辑
摘要: 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染。所以本篇介绍对 UnmanagedArray阅读全文
posted @ 2016-10-23 14:33 BIT祝威 阅读(168) 评论(0) 编辑
摘要: 本篇介绍了ViewPort实现多视口的功能以及在多视口下的Picking功能。这就实现了一个3D模型编辑器的简单雏形。阅读全文
posted @ 2016-10-13 15:44 BIT祝威 阅读(363) 评论(0) 编辑
摘要: 本文用step by step的方式,讲述如何使用CSharpGL渲染一个Klein Bottle,从而得到下图所示的图形。你会看到这并不困难。阅读全文
posted @ 2016-09-30 12:43 BIT祝威 阅读(320) 评论(0) 编辑
摘要: 当shader中写了一个uniform块时,你只需在应用程序客户端也写一个对应的struct,然后用Renderer.SetUniformBlock(blockName, structObj);一行即可实现对uniform块的数据更新。阅读全文
posted @ 2016-09-26 02:21 BIT祝威 阅读(241) 评论(0) 编辑
摘要: 三维世界里的旋转(rotate),可以用一个3x3的矩阵描述;可以用(旋转角度float+旋转轴vec3)描述。数学家欧拉证明了这两种形式可以相互转化,且多次地旋转可以归结为一次旋转。这实际上就是著名的轨迹球(arcball)方式操纵模型的理论基础。阅读全文
posted @ 2016-09-23 03:32 BIT祝威 阅读(345) 评论(0) 编辑
摘要: 本文通过阅读、翻译和扩展的方式,来逐步回顾总结一下OpenGL渲染管道,从而串联起OpenGL的所有知识点,并期望能在更高的层次上有所领悟。 另外,原文涉及的链接,我也会视情况翻译一下,琢磨一下。 为了方便对比,这里保留了英文。阅读全文
posted @ 2016-09-18 00:06 BIT祝威 阅读(408) 评论(2) 编辑
摘要: 条件渲染(Conditional Rendering)是一项非常厉害的技术。当要渲染一个数据量很大的模型时,用条件渲染技术能够显著提升渲染效率,因为这个技术能够少画一些被遮挡的内容。阅读全文
posted @ 2016-09-14 23:06 BIT祝威 阅读(381) 评论(0) 编辑
摘要: Texture和Framebuffer是OpenGL进行3D渲染高级效果必不可少的利器。有了Texture和Framebuffer就可以实现体渲染(Volume Rendering)等效果。现在到了对Texture和Framebuffer的创建、修改、使用进行封装的时候。阅读全文
posted @ 2016-09-01 19:15 BIT祝威 阅读(222) 评论(0) 编辑
摘要: 最近我在分析GLGUI(https://github.com/bitzhuwei/GLGUI)的代码时,惊喜地发现它给出了一个极其简单的方案。由于使用了.NET自带的Graphics和Font类型,就完全去掉了SharpFont那上千行代码。CSharpGL.dll由此下降了200K。效果增强,体积下降,代码简化,各个方面都获得提升。阅读全文
posted @ 2016-07-31 23:18 BIT祝威 阅读(352) 评论(4) 编辑
摘要: [转]基础知识漫谈(1): 想到哪儿写到哪儿 本文转自(http://www.cnblogs.com/anrainie/p/5606570.html) 一、想到哪儿写到哪儿 给公司新员工培训,和网上的新手做交流,我最先强调的都是基础。 基础有什么用? 1、节省沟通成本 有天,java群里来了个新人,阅读全文
posted @ 2016-06-22 12:01 BIT祝威 阅读(227) 评论(0) 编辑
摘要: 在理解OpenGL的坐标变换问题的路上,有好几个难点和易错点。且OpenGL秉持着程序难以调试、难点互相纠缠的特色,更让人迷惑。本文依序整理出关于OpenGL坐标变换的各个知识点、隐藏规则、诀窍和注意事项。阅读全文
posted @ 2016-06-19 03:46 BIT祝威 阅读(686) 评论(0) 编辑
摘要: CSharpGL支持控件布局,支持渲染文字了。阅读全文
posted @ 2016-06-05 14:47 BIT祝威 阅读(465) 评论(3) 编辑
摘要: 阅读全文
posted @ 2016-06-04 00:45 BIT祝威 阅读(670) 评论(0) 编辑
摘要: 实现思路 raycast 用一个3D纹理存储整个模型数据。 如下图所示,从画布上的一个像素点出发,垂直于画布的方向上,一条射线穿过3D纹理,每隔一小段距离采样一次颜色,累加起来就是此像素点应有的颜色。阅读全文
posted @ 2016-05-31 01:42 BIT祝威 阅读(589) 评论(1) 编辑
摘要: some OpenGL constants This is from (https://github.com/peterderivaz/pyopengles/blob/master/gl2.py) 1 GL_DEPTH_BUFFER_BIT = 0x00000100 2 GL_STENCIL_BUF阅读全文
posted @ 2016-05-29 20:43 BIT祝威 阅读(89) 评论(0) 编辑
摘要: 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型示例。 ★用imageLoad从纹理中读取数据。★ ★用imageStore将数据写入纹理。★ ★用vertex/fragment shader显示出compute shader的计算结果。★ 下面是3个测试用例。阅读全文
posted @ 2016-05-15 18:56 BIT祝威 阅读(642) 评论(1) 编辑
摘要: 我还没有用过Compute Shader,所以现在把红宝书里的例子拿来了,加入CSharpGL中。阅读全文
posted @ 2016-05-10 23:33 BIT祝威 阅读(412) 评论(0) 编辑
摘要: 渲染半透明物体时,由于顶点被渲染的顺序固定,渲染出来的结果往往很奇怪。红宝书里提到一个OIT(Order-Independent-Transparency)的渲染方法,很好的解决了这个问题。这个功能太有用了。于是我把这个方法加入CSharpGL中。阅读全文
posted @ 2016-05-07 22:40 BIT祝威 阅读(1363) 评论(1) 编辑
摘要: 本文记录了如何实现在所有渲染模式下拾取Point、Line、Triangle、Quad和Polygon的功能。阅读全文
posted @ 2016-05-03 19:21 BIT祝威 阅读(354) 评论(1) 编辑
摘要: 批量重命名文件 下述代码用于批量重命名文件。留作备用。阅读全文
posted @ 2016-05-02 20:15 BIT祝威 阅读(107) 评论(0) 编辑
摘要: 我决定翻译一下《Advanced Illumination Techniques for GPU-Based Volume Raycasting》。像我翻译其他资料一样,只按我的需要和观点来翻译。有的部分详细翻译,附加注解,有的部分直接略过。阅读全文
posted @ 2016-04-28 23:36 BIT祝威 阅读(531) 评论(3) 编辑
摘要: 本文记录了在Picking基础上实现鼠标拖拽图元的方法。阅读全文
posted @ 2016-04-27 02:34 BIT祝威 阅读(669) 评论(0) 编辑
摘要: 从OpenGL窗口读取出图片,是非常有用的。本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法。阅读全文
posted @ 2016-04-24 17:35 BIT祝威 阅读(958) 评论(0) 编辑
摘要: 最近在整理CSharpGL时发现了一个问题:我只解决了用glDrawArrays();渲染时的拾取问题。如果是用glDrawElements();进行渲染,就会得到错误的图元。 本文就彻底解决这个拾取的问题。CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(https://github.com/bitzhuwei/CSharpGL)阅读全文
posted @ 2016-04-24 02:26 BIT祝威 阅读(536) 评论(1) 编辑
摘要: 本文陈列了基于重构后的CSharpGL的北斗七星模型Demo具有的功能:旋转、缩放、拾取、GLSwitch、UniformVariables、DrawMode阅读全文
posted @ 2016-04-22 03:19 BIT祝威 阅读(493) 评论(4) 编辑
摘要: 为了完美解析GLSL源码,获取其中的信息(都有哪些in/out/uniform等),我决定做个GLSL编译器的前端。本文介绍基于虎书实现LALR(1)分析,并生成GLSL编译器前端代码(C#)的过程。阅读全文
posted @ 2016-04-16 00:05 BIT祝威 阅读(603) 评论(4) 编辑
摘要: 为了获取CSharpShadingLanguage的token流,我设计了一个瘫痪的文法。 这当然不能进行语法分析,但是足以进行词法分析。 在使用过程中发现CGCompiler有几个bug,在此记录并fix掉。阅读全文
posted @ 2016-02-23 13:12 BIT祝威 阅读(125) 评论(0) 编辑
摘要: 您可以在下图的例子中观察血条类型的模型是如何实现的。此demo顺便加上了后面要介绍的血条型文字(teapot)和UI文字(Hello Label!)。在StringModel的基础上,只需借助IUILayout机制即可实现opengl里的标签控件。阅读全文
posted @ 2016-02-22 11:17 BIT祝威 阅读(498) 评论(2) 编辑
摘要: 在处理光照效果等问题时,模型的顶点的法线是必不可少的数据。但是法线并不直接显示在模型上,也没有别的办法可以直观地看到。如果法线计算错了,那是非常难以排查的。所以我就想用geometry shader来渲染出模型的法线。如下图的白色针状部分,就是这个teapot的法线。为了便于区分,针尖部分是顶点位置,较粗的针头部分则是法线的方向。从这个图中可以看到,我做的这个teapot的法线是很有问题的。怪不得之前拿它试验光照效果时会有一些诡异的现象。阅读全文
posted @ 2016-02-16 01:09 BIT祝威 阅读(539) 评论(0) 编辑
摘要: 漫反射(diffuse reflection)是粗糙表面的反射效果。理论上的粗糙表面,对各个方向的反射效果都完全相同。本篇就分别实现点光源(point light)和平行光源(directional light)照射到粗糙表面时产生的漫反射效果。这个示例是CSharpGL的一部分(https://github.com/bitzhuwei/CSharpGL)阅读全文
posted @ 2016-02-12 15:18 BIT祝威 阅读(508) 评论(10) 编辑
摘要: 上一篇制作了CSSL。CSSL和Renderer配合,就定义了一个渲染OpenGL元素的完整流程。本篇用T4模板来帮助开发者自动生成这个简单的代码框架。本篇使用T4模板生成多个代码文件,其方法是通用的。阅读全文
posted @ 2016-02-01 22:06 BIT祝威 阅读(139) 评论(2) 编辑
摘要: 本项目的目的:使开发者可以直接用C#书写GLSL代码。 现在编写GLSL的shader程序时,并没有什么好的开发环境。智能提示、代码补全、自动排版都没有。 GLSL是类似C语言的。几乎所有的GLSL里出现的语法形式都可以用C#以相同的方式写出来。那么用C#来写"GLSL代码",之后再自动转换为纯粹的GLSL代码,岂非一大快事?! 在本项目定义的类型基础上,你就可以直接用C#来写GLSL代码了。 C#版的GLSL,以后就称为CSSL(C# Shader Language)。阅读全文
posted @ 2016-01-30 18:12 BIT祝威 阅读(704) 评论(7) 编辑
摘要: 本文很简单,只说明如何用shader实现叠加两个纹理的效果。另外,最近CSharpGL对渲染框架做了修改,清理一些别扭的内容(DoRender()前后的事件都去掉了,明确了Renderer的概念)。本文顺带也成了对新框架的一个应用过程的例子。阅读全文
posted @ 2016-01-24 13:03 BIT祝威 阅读(434) 评论(0) 编辑

Large Visitor Globe

Flag Counter
Flag Counter