每天的记事本

2-28

**ubuntu下是没有csf播放器了,网上见一个帖子说:这种一时抢钱的软件是没有人去维护的...似乎csf不被支持是理所当然的。

试着用wine安装csf播放器,成果是装好了wine并解决了乱码问题,但用wine装的csf播放器是无法启动的,因为什么我也懒得管。

于是用virtualbox,安装精简版的xp,竟然没有声音,不知是xp的问题,还是virtualbox的问题。最后查出来还是virtualbox的setting/Audio选项要调整为:

Host Audio Driver:ALSA***

Audio Controler:ICH***

这样以后就用虚拟机看csf视频了。

 

**

svgalib肯定与linux内核通信了,否则保护模式下,它怎么访问a0000开始的显存地址空间。

一开始发现有svaglib还挺兴奋,但装好久都装不上,国内资料又奇少,我也不敢玩了。

还是用linux的framebuffer来绘图吧。xlib的窗口绘图我是不敢用了,60fps帧频下用扫面线绘制1000面100*100的矩形,cpu占用率达到10%,用来做3D的光栅化是不现实的。x真的很慢。

哈工大的计算机图形学讲的竟然就是3D图形学,真是惊喜。买这套教程花了20块钱,原先在学校里用ipv6都是随便下载的,哎。

 

**

如果有linux内核方面好的视频,是不是看看。

 

**看这一句    printf("vinfo.red=%u,vinfo.green=%u,vinfo.blue=%u,bpp=%u\n",vinfo.red,vinfo.green.length,vinfo.blue.length,vinfo.bits_per_pixel);
第一个参数类型是unsigned,压入栈的却是vinfo.red,是一个结构体:

struct fb_bitfield {
    __u32 offset;            /* beginning of bitfield    */
    __u32 length;            /* length of bitfield        */
    __u32 msb_right;        /* != 0 : Most significant bit is */
                    /* right */
};

于是这句代码输出:vinfo.red=16,vinfo.green=8,vinfo.blue=0,bpp=8  完全乱套了。printf函数肯定是先取出来offset,再是length,msb_right,看看vinfo.red,vindo.green,vinfo.blue的常规数值:  

    red: offset: 16, length:  8, msb_right:  0
    green: offset:  8, length:  8, msb_right:  0
    blue: offset:  0, length:  8, msb_right:  0
看来猜测的不错。好久没碰c语言,内部机制都忘干净了。《程序员的自我修养——库的链接,装载》是本好书。

 

march 3

**c语言连续声明多个变量,例如int a,b,c,d;

但不能这样写:int a,b,c,d=0;会提示d重复定义

ps:在百度搜索“c语言 连续声明多个变量”,找不到理想的网页,我纳闷儿百度知道应该有不少这样的问题吧,突然灵光一闪,关键词改成“c语言 连续定义多个变量”,一下子冒出来好多【C语言中一个分号最多定义多少个变量?_百度知道

10个回答 - 提问时间: 2012年08月28日
最佳答案: int a,b; int c; 虽然有2个分号,但编译后和int a,b,c;没有区别 所以声明语句的最大数量应该是调用栈的容量,比如VC默认1MB的栈空间。 最多应该..

其实其实,“c语言  连续声明多个变量”要准确一些,但必须考虑到提这种水平问题的多是新手,多是分不清“声明”和“定义”的区别...

反思一下,自己c基础还欠缺的很,是半瓢水的状态。

 

march 4

**你用百度搜索“计算机 整型”关键词。

 

**x>>14和(x>>16)<<2不一样。

 

march 6

**我把xwindow设成了framebuffer驱动模式,这样以来——我就可以通过对framebuffer的读写,操纵桌面的每个像素了。

看到自己的程序在桌面上不通过窗口簌的画出个红色矩形,觉得很新鲜。下面是绘制矩形时调用的drawLine算法(贴出一部分):

for(int x=x0_int;x<=x1_int;x++){	
					*(pt_write+2)=0xff;
					pt_write+=4;
					_2Fm+=_2a;(一看就知道是中点画线了)
					if(_2Fm<0){
						_2Fm+=-_2b;
						pt_write+=-bytes_w;	
					}
				}

 输出红色的矩形(本来想抓下来,但ubuntu自带的截图工具抓不下来,可能因为我的x-window运行在framebuffer模式下吧),但是这种红色总是和桌面上的图标,文字什么的混在一块儿。我起初以为是透明度的问题,可加上一句*(pt_write+3)=0xff没有效果。
转念一想,还是我的代码问题,没有设置green,blue字段,加上*(pt_write+1)=0xff;*(pt_write)=0xff就出现纯白色的不透明矩形了。还是很意外。

 

mrach 7

**framebuffer->>fb_var_screeninfo->>line_length是硬件决定的,不要再天真的用xres_virtual*bits_per_pixel/8来替代它了。因为每行的末尾可能有显存padden。

**原来加入liba要放在命令最后面,例如gcc -o tt -lpthread t.o仍会提示找不到pthread的相关函数,要写成gcc -o tt t.o -lpthread

march 9

*5千万次int->float转换,约40ms。

march 10

**好恶心的shell!

**

march 12

**圆的绘制算法只就做个dda就没兴趣了,计算机图形学还是选择性的学吧,遇到成块儿的暂时又用不到的,就了解一下或掌握一种算法好了。

 

6 april

  先是慢慢往东走,脚下是废弃的公路,右边间断栽有茂盛开放的蝴蝶花,花色只有红黄渐变到苍白,那渐变十分不自然,像是虫害。但花叶肥硕,有的已经无法支撑住重量,整个花株倾倒贴着地。心里知道这是远郊,仿佛曾到过某处,也是公路边栽种大片蝴蝶花的。路的左侧似乎有一颗花树,繁星般间杂着洁白明亮的花,我看到它心里就愉快了。

  突然转头往回走,空气干燥但新鲜,西北方的山脚下分明有一大片湖,似乎是深秋,湖畔的草都已枯黄,水很清亮,远远能看到湖底褐色的水草。湖的大部分应该隐藏在山的北侧,这一点梦里很确信。

  沿山脚一直向上看,惊异的发现这座山一直接入云霄,从半山腰就有越来越浓的雾气遮掩环绕。此时走近山脚了,看到山的下部支撑是已经风化成松散土质的大块石头,有一块儿十分突兀,表面成剥落状,我心里感慨这怎能长久,但又似乎晓得这山已经存在很多年了。我偏向西南走,那里似乎是我暂住的房子,只是偶尔的远行,不久就要回去。

  醒来之后,并不觉得曾去过类似的地方。

7 april

  《相思》是小时候看西游记(忘记那是前传后传了)时学来的,毛阿敏浑厚质感的中音,萦萦在耳边绕了好些年,长大后发现歌词也是极美的:

  ------------------------------------------------

红豆生南国,是很遥远的事情.
相思算什么,早无人在意.
醉卧不夜城,处处霓虹.
酒杯中好一片滥滥风情.
最肯忘却古人诗,最不屑一顾是相思.
守着爱怕人笑,还怕人看清.
春又来看红豆开,竟不见有情人去采,
烟花拥着风流真情不在.

  ------------------------------------------------

   并不做赏析,说些闲话,“红豆生南国,春来发几枝。愿君多采撷 ,此物最相思”。看第一句尤有感触,我背“红豆生南国”时,是在小学五年级,那时要参加一个竞赛,一口气背了将近四百首,白天在废弃的教室里背,晚上起夜嘴里还嘀咕着(这是后来爸妈告诉的)。我记忆力一般,但接触诗很早,家里才有一个大收音机时,他们就到县城买了唐诗磁带,都不是有知识的人,现在细细去想,那时他们还很年轻,对我教育的朴素和热切,是融入了他们对尚未展开生活的雄心壮志和天真期待。看到“是很遥远的事情”,会想起那些贫乏散漫的日子,也是很遥远的事了。

 

8 april

**c内联函数的编译是要开启-O2优化的,否则提示undefined reference..

这篇帖子讲得很详细:http://bigwhite.blogbus.com/logs/139027031.html

**小心printf溢出

bway3d的调试对象从1个三角面变成1个立方体,printf的输出信息太多,程序不久就死掉了,症状是桢循环停止,控制台(terminal)可以按键可以回显。运行程序时加上“>NUL”就好了。(并不肯定是printf溢出,说不定是哪个printf参数不对,再看)

**一些文章里提倡用内联函数代替,因为宏的可读性不好,没有参数类型检查机制,宏展开后易出错。但在应该使用宏的地方使用函数,心里总别扭。宏的意图特别明显,就是把特定的代码片儿标记出来,而且工作机制简单:仅仅是预处理器完成宏替换。我喜欢简单的东西。但前面提到有风险,可读性是其次,放弃了参数类型检查才可惜,这要求自己码代码时时刻高度集中精力。本来就该这样,一个程序员应有基本的准确度,不要过分依赖编译器的检查机制。我在找一款vim下提示宏参数的插件。

**bway3d开始用立方体调试,还是线框渲染,用dda画直线来充当三角形,还没有正经的三角面光栅化函数。并不急,也不做规划,走一步算一步,因为要做的东西就这么多,调通了基本流水线,就写三角面光栅化的函数,做Z排序,然后再用Zbuffer,再完善cut模块。再修理扎眼的细枝末节。

posted on 2013-02-28 22:01  weiweishuo  阅读(457)  评论(0编辑  收藏  举报

导航