loadomain

博客园 首页 新随笔 联系 订阅 管理

2013年12月12日 #

摘要: 学习OpenGL也有段时间了,前几篇将GL最基本的画图过程解析了一下,后面进阶的就随项目需要再学。因为之前一直是用glut这个实用工具包来开发很方便,但是会附带一个控制台的窗口,实在觉得有些low,因此就打算将GL嵌入到应用程序中去。 下面就把前几章学习的知识结合起来,在QT下实现GL的动画。之所以选QT而非MFC原因有2点,一则是QT是开源的,现在开源的东西都很热闹,所以我也凑凑热闹,之前用MFC做过别的上位机程序,我是个喜欢图新鲜的人;二则QT的移植性好,一次编译到处运行吧。 总结几处注意点: 1.glut的函数是一个也不能使用了,需要自己用QT的Widget类来创建应用窗口,同... 阅读全文
posted @ 2013-12-12 17:06 loadomain 阅读(1021) 评论(0) 推荐(0) 编辑

2013年12月3日 #

摘要: 以日月地为例的一个模型视图变换。绕了比较多的弯路,下面是几个注意点总结。注意点: 1.GL函数对模型的操作是基于当前局部坐标系,即模型坐标系而非世界坐标系,二者只在第一次初始化完毕之后才重合; 2.矩阵变换——缩放、平移、旋转是左乘运算,即与代码顺序相反; 3.先平移再旋转类似星体的公转,先旋转再平移类似星体的自转; 4.本例中采取模型坐标系绘制,对不同星体的操作其局部坐标不断变换,连续绘制一系列星体;另一方面若是采取单独星体绘制,即每一个星体的绘制实则是在世界坐标系中绘制,需要用glLoadIdentity()函数对之前的三维变换进行复位; 1 #pragma comment(l... 阅读全文
posted @ 2013-12-03 20:45 loadomain 阅读(583) 评论(0) 推荐(0) 编辑

2013年12月2日 #

摘要: 在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段。由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU显示。假设这样一种情况,有一批数据并不经常更改而数目又挺大,如果按照通常的做法无非是不断重复不断重复发送数据,整个操作主要内容变成了传输数据。针对这种窘况,GL内核允许客户将客户端的数据直接在GPU显存区域开辟一段缓冲区存储,存储具备这种特点的数据。 此时,考虑另一种极端情况,绘图数据需要实时渲染更新,此时若也使用缓冲区对象则其资源、操作开销的优势就没有那么明显,这种情况不如按照通常的手段。... 阅读全文
posted @ 2013-12-02 09:28 loadomain 阅读(376) 评论(0) 推荐(0) 编辑

2013年12月1日 #

摘要: 1 #pragma comment(lib,"glut32.lib") 2 #pragma comment(lib,"glut.lib") 3 #pragma comment(lib,"GlU32.lib") 4 #include 5 #include 6 //use vertex_array way to draw primitives 7 //globle variable 8 //立方体八个定点的三维数据坐标 9 GLfloat VertexData[] = { 10 -0.5f, -0.5f, -0.5f, 11 0.5f, 阅读全文
posted @ 2013-12-01 09:46 loadomain 阅读(331) 评论(0) 推荐(0) 编辑

2013年11月30日 #

摘要: 学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的。下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的。 程序实现的功能是,根据当前随即种子摇出来的结果来动态改变绿色十字架的线宽、坐标、颜色……不断绘制显示在屏幕。 注意,对于图形建模比如画线、画多边形等这些细节可以查阅书籍,不再重复点出来,网上千篇一律的东西还是很多的。下面的注解是个人的理解,包括参考、查阅其他资料。需要提点的就是我目前用的是图书馆借出来的第四版GL编程指南,有些东西比较落后了,照搬的话可能不好使。目前的glut版本最新的是api version =4,应该是变动还不是特... 阅读全文
posted @ 2013-11-30 19:54 loadomain 阅读(319) 评论(0) 推荐(0) 编辑

2013年11月28日 #

摘要: 最近需要做一个基于Zigbee室内无线定位的系统,受到TI公司ZigBee Sensor Monitor软件的启发,打算用OpenGL来做一个3D显示空间内物体位置的程序。学习阶段选择VS2010+OpenGL,而主机确定是用raspberry pi,到时候需要移植到ES版本。 选择OpenGL看中的就是移植性强,至于其效果和D3D孰强孰弱也很难比较。一则恐怕目前没有使用D3D的机会;二则3D计算机图像渲染效果除了软件还需要硬件支持。 废话不多说,从官网下了OpenGL的一个库GLUT,一共就5个文件。dll后缀放system32/syswow64文件里,lib后缀放vs2010-sd... 阅读全文
posted @ 2013-11-28 20:13 loadomain 阅读(322) 评论(0) 推荐(0) 编辑

2013年9月3日 #

摘要: 前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ、1333MHZ的天下了,但是接下这周来准备写一下sdram的controller。虽然本科生的时候很早就接触过flash,sram也听过sdram,但是flash和sram一般是作为单片机的一部分集成在内部,因此他们的总线基本被优化成指令,再者sdram的时钟一般100MHZ,用低速的微控制器驱动着实让sdram深受委屈。 这次要驱动的sdram芯片是ISSI的IS42S16400D-7TL。刚刚接触sdram也是一头雾水,厚厚的手册,满满的英文。不过还好看了网上一片解读... 阅读全文
posted @ 2013-09-03 11:17 loadomain 阅读(1357) 评论(2) 推荐(0) 编辑

2013年9月2日 #

摘要: 前言:回校了,辦好手續就著手寫測試篇。初步的norflash控制器已經完成,通過硬件測試。目前的norflash完成扇区块擦除、单字节写、单字节读3个功能。博文最后附上源码。 总结:和之前的博文一样,里面的模块没有做时序分析,这一点会在今后的工程里面改进。另外在测试的过程中,发现写完一个字节后只需经过若干个系统时钟周期即可输出正确的写入内容(设置等待写完成的总线方向为输入,可以看到三态口的数据总线显示之前写入的数值,本人源码写入0xcc,可见stp2抓图)。这一点和手册里给的单字节写需要9us的等待时间写操作完成才能进入读不同。但是需要注意的是,手册给的是一个范围,其中9us仅仅是一个典... 阅读全文
posted @ 2013-09-02 19:50 loadomain 阅读(2718) 评论(1) 推荐(1) 编辑

2013年8月31日 #

摘要: 前言:经过几天修改,norflash控制器基本已经完成,通过仿真。完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver.v。目前只具备扇区块擦除、单字节写、单字节读。 设计思路: norflash_driver模块:可以根据外部控制脉冲信号(可以是按键、开关、其他模块产生的脉冲信号)控制其在每个脉冲下产生相应的“指令、读写地址、待写数据、norflash请求”4种信号。指令可以预先用一个lut存储。用这种方式操作norflash_ctrl模块有点类似中断,在时间上安排未必是完整紧凑的。另外一种方式利用no... 阅读全文
posted @ 2013-08-31 10:23 loadomain 阅读(2926) 评论(0) 推荐(1) 编辑

2013年8月28日 #

摘要: 摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧。 如何看手册:拿到手册后满满的英文,很多人看了就泄气,那么如何在浩如烟海的英文里找到实际需要的信息,这一点很关键。因为毕竟是用Verilog建模,不像软件描述那么灵活,很多时候受限于硬件描述的瓶颈,因此一开始先给自己起点低一点,建模完成norflash的单块读写功能,至于其他比如CFI里面的其他功能可以以后完善。类似sdram和sram,作为memory的一员,flash无非是在控制总线下数据总线和地址总... 阅读全文
posted @ 2013-08-28 20:37 loadomain 阅读(3419) 评论(1) 推荐(0) 编辑