九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在ARM Linux上使用OpenGL(轉(zhuǎn))
這兩天在ARM上跑了一個(gè)OpenGL,應(yīng)該說是OpenGL|ES的軟件包,雖然我覺得可能最后我不會(huì)使用這個(gè)軟件包,但是還是記錄下來以備忘記。
先全局介紹下,首先,什么是OpenGLOpenGL|ES。OpenGL是一套繪圖函數(shù)的標(biāo)準(zhǔn),OpenGL|ESOpenGL中針對(duì)嵌入式系統(tǒng)的一套函數(shù)子集。OpenGL|ES的官方是http://www.khronos.org/opengles/, 上面有更多的信息。需要注意的是,OpenGL僅僅是標(biāo)準(zhǔn),而如果你要使用OpenGL,則需要找到可以實(shí)現(xiàn)這些OpenGL標(biāo)準(zhǔn)函數(shù)的程序庫或源代碼。 目前,在ARM這種一般沒有圖形加速器的平臺(tái)上,OpenGL|ES的實(shí)現(xiàn)都是靠軟件的。主要的OpenGL|ES程序庫有:Klimt,Vincent (ogles),TinyGL等。Google一下,可以看到它們的主頁。這些實(shí)現(xiàn)基本上都是基于X11、Qt/E這樣的窗口平臺(tái)的。我用的軟件包叫做 PicoGL,它是TinyGL的一個(gè)分支,不同之處就在于PicoGL支持直接在Framebuffer上輸出圖像。PicoGL是一位臺(tái)灣同胞寫的, 他的主頁http://jserv.sayya.org/。但是這個(gè)軟件包的源碼極其難找,我用的是一位很牛的同事搜到的,地址是http://people.openmoko.org/jserv/graphics/picogl-20051108.tar.bz2。
要使用這個(gè)軟件包還必須有支持軟件浮點(diǎn)的交叉編譯器,我們一般用的arm-linux-gcc 2.95.3/3.3.2/3.4.1等都不支持軟件浮點(diǎn),這需要我們重新編譯一個(gè)。編譯一個(gè)交叉編譯器,引用Crosstool作者Dan Kegel的話,used to be a scary prospect,requiring iron will,days if not weeks of effort……幸好有Crosstool這個(gè)工具,如果你的機(jī)器好網(wǎng)速快,輸入個(gè)指令,差不多1個(gè)多小時(shí)就可以編譯出來。crosstool的主頁http://kegel.com/crosstool/,下載地址http://kegel.com/crosstool/crosstool-0.43.tar.gz。
首先制作交叉編譯器,先以root用戶登陸,建立交叉編譯器安裝目錄,而且把目錄所有者改為你的普通用戶
# mkdir /opt/crosstool
# chown /opt/crosstool lxz
# chgrp /opt/crosstool users
然后以普通用戶登陸,解壓縮和安裝
# tar xvzf crosstool-0.43.tar.gz
# cd crosstool-0.43
# ./demo-arm-softfloat.sh
crosstool會(huì)從網(wǎng)上下載需要的源碼包,然后編譯,最后安裝。crosstool相關(guān)的資料可以看http://kegel.com/crosstool/current/doc/crosstool-howto.html。然后在/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu里面就會(huì)有支持軟件浮點(diǎn)的交叉編譯器了。
然后解壓縮picogl,修改picogl的代碼。
首先是picogl的一處bug,在backends/vesafb/tk.c的第一行增加宏
#define _FB_TK_
然后把backends/vesafb/glx_impl.h里面的
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
修改為
#ifdef _FB_TK_
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
#else
extern struct fb_fix_screeninfo FixedInfo;
extern struct fb_var_screeninfo VarInfo, OrigVarInfo;
#endif
這是因?yàn)橛泻脦讉€(gè)文件調(diào)用了backends/vesafb/glx_impl.h,如果不這么改,會(huì)出現(xiàn)多重定義錯(cuò)誤。
然后,為了讓你的程序使用picogl更方便些,最好再改個(gè)地方include/GL/glx.h
#include GLX_IMPL_HEADER
改為你喜歡的方式,指向backends/vesafb/glx_impl.h
修改backends/vesafb/tk.c中,initialize_fbdev函數(shù)有關(guān)VarInfo的設(shè)置,改為適合你的LCD的。
然后配置
# cd PicoGL
# CC=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc ./configure --with-backend=vesafb --host=arm-softfloat-linux-gnu --prefix=/home/lxz/builtPicoGL
說明下,CC=設(shè)置交叉編譯器的位置,--with-backend=vesafb指定使用FB作為顯示設(shè)備,host=arm- softfloat-linux-gnu設(shè)定交叉編譯,--prefix=/home/lxz/builtPicoGL設(shè)定編譯后庫和示例程序安裝位置。
然后
# make
# make install
在/home/lxz/builtPicoGL/lib里就有PicoGL的庫了,把動(dòng)態(tài)庫文件拷貝到arm-linux根文件系統(tǒng)的/lib 里面,把/home/lxz/builtPicoGL/bin里的程序拷貝到arm-linux文件系統(tǒng)的任何地方,然后制作和燒寫文件系統(tǒng)映像(或者使 用NFS),執(zhí)行,就可以看到結(jié)果了。
當(dāng)你編譯一個(gè)使用PicoGL庫的程序(假設(shè)叫做hello.c)時(shí),需要輸入
# arm-softfloat-linux-gnu-gcc -c -I /home/lxz/PicoGL/include -I /usr/include hello.c
# arm-softfloat-linux-gnu-gcc -o hello -L /home/lxz/builtPicoGL/lib/libPicoGL.so -L /home/lxz/builtPicoGL/lib/libPicoGLU.so -lm hello.o /home/lxz/builtPicoGL/lib/libPicoGL.a /home/lxz/builtPicoGL/lib/libPicoGLU.a
今天寫得比較粗糙,呵呵。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
AT91RM9200引導(dǎo)程序的建立(一)--
Ubuntu 10.04安裝交叉編譯器
ubuntu10.04下建立交叉編譯工具鏈(支持軟浮點(diǎn))全過程
如何制作支持softfloat的ARM交叉編譯器
compile QT for freescale
我的白金時(shí)代: cygwin下交叉編譯環(huán)境搭建完成
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服