簡單的說,不能。光標屬于操作系統的GUI元素@笑傲暖壺
確實是,不知道是那個網站被黑了還是自己就想這么搞,算了,瞎了我的氪金狗眼,相信國內網站,以后我東西還是直接往sf上放吧。
re: SDL入門教程(十二):音樂和音效 lf426 2009-06-15 23:06
我在Linux下嘗試過midi也失敗可,可能是系統默認的組件中不支持midi吧。
謝謝。呵呵,這種看起來小的知識點,很多書上都沒提到,但是其實很實用。
呵呵,我的失誤,忘記flip了。
for ( int i = 0; i < 4; i++ ) {
screen.fillColor(0xFF, 0xFF, 0xFF);
sprite.blit(atX[i], atY[i], fromX[i], fromY[i], IMG_WIDTH, IMG_HEIGHT,2,2);
screen.flip();
}
每次畫圖前先清屏哈。最后一個循環改成:
for ( int i = 0; i < 4; i++ ) {
screen.fillColor(0xFF, 0xFF, 0xFF);
sprite.blit(atX[i], atY[i], fromX[i], fromY[i], IMG_WIDTH, IMG_HEIGHT,2,2);
}
試試
是我寫錯了,謝謝提醒。教程里面的源代碼還很不成熟,更進一步的代碼請在“mySDL_GameEngine”中察看。
LGPL也可以靜態編連的,只要一并公開源代碼就可以了。:)
你可以找找《Focus On SDL》這本書上有沒你要的資料。
http://fleetlong.c.lunqun.com/read-htm-tid-4034.html
在Linux下也有很多IDE是不需要寫Makefile的哈。
我的意思其實就是,一般情況下,不需要設置成硬件渲染。我認為SDL軟件渲染實際是把任務交給了x11,至于x11最終是通過什么途徑渲染不是很重要,而且我認為x11實際上是調用了nv的驅動,所以,雖然沒有在SDL中設置成硬件渲染,但是并不意味著就沒調用顯卡。當然,都是我的猜測,具體情況,可能得問問SDL作者本人。
我的認識是這樣的,只要x11啟動了nv的驅動,硬件加速實際上是打開的,只是被封裝到了x11內部,我們通過SDL軟件渲染調用了封裝后的x11接口,實際作用的時候是啟動了硬件加速。這樣應該比我們直接調用硬件接口更加安裝簡單易用。如何繞過這個設定,估計只有問問SDL的作者了,我在fqa里是沒找到。
謝謝。你說得很對,當初在開始寫本節教程的時候還沒有把SDL幾種surface的關系整理清晰。在后面的SurfaceClass中,我設置了一個BaseSurface作為Picture和Text兩種面的父類,這個面就使用了虛析構函數了。更新的代碼在“mySDL_GameEngine”,請不吝賜教,萬分感謝。
感謝您的指教,我對C++標準庫的了解還是不多啊,其實我一直就覺得這樣的功能標準庫應該提供的,之前一直沒有google到。
應該是不可以。因為SDL是為游戲設計的庫,這個GUI是所有鍵盤鼠標事件的接口。多窗口就混亂了。另外,涉及到多線程的時候也只能允許一個線程作為當前窗口來接受信號。
我QQ公布出來的,85132383,最近在Linux下時間比較多,還是發郵件方便一些哈。我還是問你,你用什么方法“復制”和“清空”surface的?
我是這么理解的:blit行為的結果是描述了surface之間的關系,但是不會產生新的surface,也不會對源surface有什么改變。之所以blit之后把源面flit出來,會看到blit行為的效果,應該是因為將blit行為綁定到源面的效果。另外,你說的這個問題貌似跟blit聯系不大,關鍵是你是怎么復制surface的?
我個人比較看重的是自動補全功能。Code::Blocks還是不如VC完善的。(*iterator)這種東東辨別不出來是對象啊。
SDL_iconv_t 和SDL_iconv_open是什么東東啊?呵呵,iconv是GNU項目的一部分,可不是SDLlib的一部分哦。 :)
我裝的Express版的,沒有ATL和MFC庫,你得拜托裝了完整版vs2005.net的朋友給你找個配置文件哈。
命令可以在“命令與提示符”(Windows)或者在shell(Linux)中直接使用。當然,前提是路徑PATH能找到相關命令。在批處理文件(Windows, *.bat)或者shell腳本中可以指定尋找命令的PATH。*.po文件是msginit命令得到的。
沒看明白你的意思。指的是窗口位置?不知道SDL里面有沒有控制窗口出現在屏幕什么位置的函數。
傳說中,VC6對C++標準支持不好——當然,實際上我個人還沒遇到特別嚴重的情況——因為我用的C++還很初級:) 這個要怪只能怪M$自己,自己搞了太多概念,太多自己的標準。
我用的是Express Edition,沒有MFC這些。估計你還是要參考下程序的布局文件(manifest),看看需要的dll以及應該放在什么位置。
版本或者兼容性的問題吧,這個估計你只有去問問Sam Lantinga了(SDL作者,slouken@devolution.com),以我以往的經驗,他會熱心的幫助你的。
播放視頻的函數是有的,視頻編輯就不知道了。點陣漢字我也沒試過,這些你都可以問問Sam Lantinga本人。
用了SDL_ttf,需要鏈接libsdl_ttf.a
gcc a.c -lSDL -lSDL_ttf
另外,你倒數第二個“}”的位置錯了。應該在TTF_Quit()后面。
MinGW的標準輸出(std::cout & std::cerr)是在一個叫stdout.txt的文本文件中。
一直在官方升級的xp和2k3基本上不需要vc80和vc90的dll,Vista就更不需要了。但是問題是有多少人能在官方升級的。:)珍惜生命,拒絕盜版^^
re: SDL入門教程(十二):音樂和音效 lf426 2008-04-28 12:53
我試過可以呀。SDL_mixer所帶的dll文件里面就包含smpeg.dll。
估計缺失某些資源文件吧,比如字體或者圖片什么的。你編譯為Console看看有什么異常拋出吧。我編譯的是Windows版本的,就看不到異常信息了。
re: StringData[未登錄] lf426 2008-04-24 11:41
請參考這篇教程“SDL入門教程(十):1、多語言支持,Win32下的GetText ”,GetText for Windows的主頁上,Developer files包含了libintl.h和libintl.lib;libiconv的問題請參考“SDL入門教程(十):3、字符集之間的轉換,win32下的libiconv ”,是在SourceForge上下載的,已經為win32編譯好了。純粹從源代碼進行編譯我還沒有試過。:)
如果是沒找到圖片文件,會異常拋錯,不會顯示黑色的窗口。你說的現象,可能是其他地方有問題。
atexit()的效果相當于在main()終止的時候執行,無論是正常退出,比如return 0,或者異常退出,比如exit (-1)或者其他異常的情況下,只要main()結束了,atexit()就會調用,放在main()的任何位置理論上都是可以的。
不過后面的章節我使用對象來管理SDL的裝載與退出了,就用不上atexit()了。
呵呵,本人水平有限哈。數據結構和算法還在學習中,STL的那些容器還沒有完全體會在不同情況下使用的優勢和劣勢。
問題的解決[未登錄] lf426 2008-03-02 23:22
其他關心的朋友請參考“SDL入門教程(五):7、鼠標事件演示,代碼重用 ”。
補充1 lf426 2008-02-15 18:15
補充一個問題:當把一個surface blit 到另外一個surface上的時候,引起后者像素數據變化了嗎?或者說,源surface的數據“畫”到了目的surface上了嗎?我的試驗結果是,如果在blit后釋放源surface,程序會出現問題。這至少說明blit不是真正的“畫”圖。
補充1[未登錄] lf426 2008-02-11 17:58
我發現如果SDL_DOUBLEBUF位標被成功啟用,則一定采用SDL_HWSURFACE,即使指定了使用SDL_SWSURFACE。