自己的经验知识杂记

 工作中学习收集的一些知识还有解决问题的方法,一般是些小技巧来不及总结的那种,仅用于自己查阅!

/**********************************************************************************************************************************/

 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8819772,作者:gqb666  
/**********************************************************************************************************************************/

1.图形学流水线:

顶点->顶点变换- >片源组装->裁剪->插值->像素操作->stencil test ->depth test ->alpha test->alpha 混合

顶点着色器->插值->图元组装光栅化或者几何着色器->片段着色器->裁剪测试->多重采样->模板测试->深度测试->混合->抖动->遮罩输出

 

不对,比如你用三角形面片逼近一个球,如果你指定一个三角形每个顶点法向量都一样的话,加上光以后你会发现这个球是不光滑的。因为实际得到的是一个多面体而不是一个球。但如果你根据每个顶点在球面上的坐标计算该顶点实际的法方向(是球面的法方向)的话,得到的球就会光滑得多了。
换句话说,其实顶点法向量是根据原先的曲面算出来的,而不是根据近似以后的三角形面片算出来的。
关于根据曲面方程计算上面任意一点法向量的问题,可以参考任意一本高等数学书。
如果不知道曲面的解析方程的话,也不妨用平面法向量代替曲面法向量,不过光滑程度差一点。


图形硬件技术:

 1.fast clear
 2. tile based rendering
 3. h-z
 4.early z 
 5.hierarchy Z
 6.Z compression
插值 (Interpolation) 
   在不生成像素的情况下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。有些相机使用插值,人为地增加图像的分辨系。
 
但是w的值就是等于z的值,这个z值不是映射到0到1的值
你把那个透视矩阵乘以一个x,y,z,w就等于z
w就是乘以透视矩阵后的w值

 

fbo

stencil buffer的作用
mipmap纹理采样
reflection
shadow map
shadow volume
stencil buffer

Deferedshading 

skining

water 

 

 

2. 测试framebuffer

先cat /dev/fb0 >a.dat生成一个不就行了?以后就拿这个a.dat测试

 

3.shell脚本相关

shell脚本中${#0}表示第0个参数的长度,也就是命令的长度,${#1}表示第一个参数的长度。
举例:
./sub_str.sh hello 2 3
刚${#0}=12  ${#1}=5${#2}=1 ${#3}=1  

4.valgrind
内核态调试神器:valgrind
内存使用检测,包括:
    –内存泄漏
    –非法内存访问
    –未初始化变量使用
    –重复释放内存
  •多线程竞争
    –检测死锁
    -检测竞争

 

将这个CPU_CFG_INT_DIS_MEAS_EN 关掉,去掉进出中断时统计开关中断的时间,以减少进出临界区的时间。果然解决了问题!

编译:
$ g++ -IGL -lglut test2.cpp -o test.exe
就生成了test.exe
$  ./test.exe
显示:
OpenGL Warning: XGetVisualInfo returned 0 visuals for 0xa082b78
OpenGL Warning: Retry with 0x8002 returned 0 visuals
Segmentation fault
解决方案
$ LIBGL_ALWAYS_INDIRECT=1 ./test.exe

派生类的继承方式

默认的派生方式说明为private,各种继承的特点如下:
1。私有继承:私有继承的特点是基类中的公有成员和保护成员作为派生类中的私有成员,不能够被派生类的子类所访问。在私有继承方式下,基类中的公有成员和保护成员只能够被直接派生类访问,不能够由派生类的子类再继承。
2。公有继承:公有继承的特点是基类中的公有成员和保护成员作为派生类中的公有成员和保护成员,但基类中的私有成员仍然是私有的(不可继承)。在公有继承方式下,基类成员的访问权限在派生类中保持不变,公有派生类的对象可以访问基类中的公有成员和保护成员;派生类的成员函数可以访问基类中的公有成员和保护成员。
3保护继承:特点是基类中的公有成员和保护成员都作为派生类中的保护成员,基类中私有成员仍然是私有的。

各种继承方式的保护属性

父类成员属性                    公有继承          保护继承           私有继承
private                                 不可继承          不可继承           不可继承
proteceted                             proteceted       private            private     
public                                      public           proteceted         private 
构造函数静态成员友员关系     不可继承         不可继承           不可继承
 
 
 
16bitSDRAM接法如下图:

 
Ubuntu下编译AndroidNDK项目报arm-linux-androideabi-gcc:命令未找到 

NDK-BUILD失败,错误提示: 
make: ~/dev/android/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: 命令未找到 
找了半天,在网上终于找到个解决办法 
step1: 
sudo apt-get install libc6-dev-i386 
step2: 
sudo apt-get install ia32-libs 

 

VIM 学习笔记

http://www.360doc.com/content/10/1128/15/4807202_73143894.shtml

 

nividia

http://www.nvidia.com/object/cube_map_ogl_tutorial.html

 

 Toolchains have a loose name convention like arch[-vendor][-os]-abi.

arch is for architecture: arm, mips, x86, i686...
vendor is tool chain supplier: apple,
os is for operating system: linux, none (bare metal)
abi is for application binary interface convention: eabi, gnueabi, gnueabihf
For your question, arm-none-linux-gnueabi and arm-linux-gnueabi is same thing. arm-linux-gcc is actually binary for gcc which produces objects for ARM architecture to be run on Linux with default configuration (abi) provided by toolchain. 

http://hi.baidu.com/dbfr2011818/archive/tag/%5B%E8%BD%AC%E8%BD%BD%5D%E5%9B%BE%E5%BD%A2%26%2338%3Bdx?page=9


出现文件系统错误:
在修复模式下重新挂载一下“/” mount -o remount,rw /  就可以了

修改这个文件etc/sysconfig/network这个文件里的主机名.
NETWORKING=yes
HOSTNAME=主机名
------------------------------------------------------------------------
记得重启!!!
------------------------------------------------------------------------
完整:
第一步:
#hostname oratest
第二步:
修改/etc/sysconfig/network中的hostname
第三步:
修改/etc/hosts文件

Fedora 安装卸载软件时比较重要的命令:
安装:rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm --nodeps --force
卸载:rpm -e linuxqq-v1.0.2-beta1.i386.rpm --nodep --force
查询:rpm -qa | grep  linuxqq

 

GPU架构

http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=2993


总结一点:虚拟机中Linux中minicom里COM1、COM2…对应tty0、tty1而kermit里面对应ttyS0、ttyS1……。


默认情况下,tmpfs会mount到/dev/shm目录。使用tmpfs,就是说你可以使用这个目录,这个目录就是tmpfs,如你写临时文件到此目录,这些文件实际上是在VM中。
要使用tmpfs,您要在 内核配置时,启用“Virtual memory file system support”。
为防止tmpfs使用了全部VM,有时候要限制其大小。要创建一个最大为32 MB的tmpfs文件系统,键入:
# mount -t tmpfs tmpfs /mnt/tmp -o size=32m
添加到 /etc/fstab,应该是这样:
tmpfs /mnt/tmp tmpfs size=32m 0 0


嵌入式系统中cgi向lighttpd服务器上传文件遇到内存不足的解决方法:

cgic.c里面的(第一行有效代码)
#define cgicTempDir "/dev/shm"
lighttpd.conf里面的(最后一行)
server.upload-dirs=("/dev/shm")


Telnet root用户的登入

Telnet 不是很安全,默认的情况之下不允许 root 以 telnet 进入 Linux 主机 。若要允许root用

户登入,可用下列方法:

(1)[root @echo /root]# vi /etc/pam.d/login

#auth required pam_securetty.so #将这一行加上注释!

或[root@echo root]# mv /etc/securetty /etc/securetty.bak

(2)编辑/etc/securetty 文件,加上下面几行:

pts/0

pts/1

pts/2

pts/3

测试root用户直接telnet登陆成功,这样, root 就可以直接进入 Linux 主机了。不过,建议不要这样做。也可以在普通用户进入后,切换到root用户,拥有root的权限。


linux上就有开源软件做到这点,叫valgrind,直接在运行环境配上这个东西,什么内存崩溃、溢出、泄露通通给你找出来。
对于嵌入式开发者,更方便的方式就是看崩溃的内存,通过addr2line来debug,不过要求开发者对内存有非常深刻的认识。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值