日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

世嘉MD游戏开发【七】:绘制图片,drawImage

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 世嘉MD游戏开发【七】:绘制图片,drawImage 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這一期講繪制圖片。

上一期講的是繪制tile,還要用那個不怎么好用的工具導出數組數據,很繁瑣,這次就不用那個蹩腳的工具了,隨便一個圖片用photoshop處理一下就可以了,對于圖片的要求有這么幾點:

1.圖片分辨率必須是8的整數倍,像8,16,32這樣的都可以,9,10,12,31這樣的就不行了,編譯會報錯。

2.圖片的顏色數不能超過16,超過16也會編譯報錯,一個普通圖片怎么用ps處理成16種顏色呢,看下圖:

還有一個很重要的細節說一下:

SGDK一共有4組調色板,每組有16種顏色,看過前面一期的應該都知道了,如果圖片用ps索引顏色后不足16種顏色,可以手動把剩下的空顏色設置成別的顏色補齊16種,要不然可能會出現不可預知的問題,比如文字不會顯示出來,因為文字用到的顏色默認是最后一個顏色,所以下圖中的情況應該是盡量避免的:

不讓有空顏色我們怎么弄透明度呢,默認第一個顏色是背景色,所以只要用第一個顏色畫過的地方都會是透明的。

圖片處理完之后保存為pic.png格式,放到工程目錄下的res文件夾備用。

我的圖片和調色板如下圖所示:

在res文件夾里空白地方鼠標右鍵新建一個txt文檔,重命名為picture.res,名字大家自己隨便寫,后綴是.res就可以,當然不能有中文出現,用記事本打開res文件,里面寫如下代碼:

IMAGE pic "pic.png" 0

寫完保存。

這個文件就相當于聲明了一些變量,IMAGE代表變量的類型,還有其他類型,比如SPRITE,WAV等等,pic是變量的名字,在代碼中用到這個資源的時候就可以寫pic,"pic.png"是路徑,res文件夾就是根目錄(不是工程根目錄,只是資源根目錄),如果這個圖片在res/picture文件夾里,那么這個路徑應該寫作:"picture/pic.png",最后這個0意思就是壓縮級別,0是不壓縮,詳情見SGDK/bin目錄下的rescomp.txt文檔或者SGDK自帶的范例。

然后用vscode打開工程,在src文件夾里新建main.c,代碼如下:

#include <genesis.h> #include <vdp.h> #include "picture.h" //res目錄中的picture.res會自動生成picture.h文件int main() {//在屏幕上2,0位置繪制文字VDP_drawText("Draw Image", 2, 0);/*聲明一個unsigned short類型的變量index,TILE_USERINDEX是一個系統常量,它的值是16,意思是VRAM(顯存)中的第16個tile塊這個位置。一般都從第16個開始用,前面15個或許有其他用途,但是暫時我沒發現前15個位置不能用,我看好多代碼里都是空出前15個位置,貌似是把前15個tile留著給背景用,我覺得這都是游戲制作者自己的設計,哪幾個位置給背景哪幾個位置給精靈都是設計好的,我們自己也可以設計自己的位置,如果你要從1開始用也可以,目前我沒發現有啥不妥,但是0這個位置盡量不要用。*/u16 index = TILE_USERINDEX;//設置調色板,把圖片的調色板數據賦值給PAL0VDP_setPalette(PAL0, pic.palette->data);/*先來解釋一下TILE_ATTR_FULL這個函數,這個函數的意思是編碼tile的屬性給tilemap數據,第一個參數PAL0是第一個調色板,第二個參數0是優先級是0,優先級高的則會顯示在上面,優先級低的就顯示在優先級高的下面,也就是顯示層級,第三個參數FALSE是垂直軸鏡像,這里就不鏡像了,所以是FALSE,第四個參數FALSE是水平軸鏡像第五個參數上面已經解釋過了,就是顯存中tile塊的位置VDP_drawImageEx:第一個參數是卷軸,世嘉MD有兩層卷軸,一個PLAN_A,一個PLAN_B,這倆卷軸喜歡哪個用哪個第二個參數是const Image*,是一個圖片類型的指針,那么很自然的就要傳一個地址進去第三個參數略第四五個參數是網格坐標,8x8為一個單位第六個參數是要不要加載調色板,這里一般都是不加載調色板的,因為調色板我們前面都手工設置過了第七個參數是CPU繪制還是DMA繪制VDP_drawImageEx有一個返回值,是unsigned short類型的,也就是u16類型,當內存不足夠加載圖片的時候就會返回FALSE,也就是0,返回值不是0那就是加載成功了*/VDP_drawImageEx(PLAN_A, &pic, TILE_ATTR_FULL(PAL0, 0, FALSE, FALSE, index), 0, 1, FALSE, CPU);//每次用了index這個值的時候得知道用了多少個tile,不然下次用的時候你也不知道用到哪個位置了,亂寫可不行,寫的那個位置要是已經有了tile,//那么已經有的那個tile就會被覆蓋,這就不行了,全亂套了,numTile這個值的意思是:這個圖片有幾個不重復的tile塊組成,不一定是按分辨率算出來的tile塊,注意是不重復的tile塊index += pic.tileset->numTile;while (1){VDP_waitVSync();}return 0; }

編譯,得到rom.bin,用模擬器運行效果如下:

這個圖是街機游戲街頭霸王Alpha3里面的科迪,科迪的調色板是20色,MD只支持16色,索引后就丟失了4種顏色,所以有些失真,但總體效果還可以。

未完待續。。。

復古游戲開發群:879063892

總結

以上是生活随笔為你收集整理的世嘉MD游戏开发【七】:绘制图片,drawImage的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情视频久久 | 91精品视频免费 | 日韩三级中文字幕 | 国产精选第一页 | 天天艹av| 国产69精品一区二区 | 免费天堂av | aaa在线播放 | 亚州av在线播放 | 国产亚洲精品久久久久久久 | 欧美精品123 | 在线中文字日产幕 | 在线观看成人网 | 非洲一级片 | 日韩专区欧美专区 | 一级黄色大毛片 | 国产一区一区 | 国产成人av一区 | 成年人免费在线观看网站 | 奇米四色7777| 在线色网站 | 久久一热 | 成人国产在线观看 | 曰女同女同中文字幕 | 日韩欧美手机在线 | 久久男女视频 | 美女毛片在线观看 | 国产精品伦理一区 | 人妻少妇精品视频一区二区三区 | 海量av资源| 国产在线视频网 | av色成人 | 精品视频大全 | 成年人网站免费在线观看 | www.com捏胸挤出奶 | 国产一区二区麻豆 | 先锋影音av资源在线 | 成人在线免费网站 | 一区二区三区免费在线观看视频 | 国模叶桐尿喷337p人体 | 婷婷综合国产 | 一卡二卡国产 | 免费a级大片 | 精品国产99 | 深夜福利1000 | 少妇人妻偷人精品一区二区 | 99精品国产免费 | 色婷婷av一区二区三区之红樱桃 | 少妇综合 | 日韩中文三级 | www奇米影视com| 国产成人中文字幕 | 古装做爰无遮挡三级视频 | 自拍偷拍亚洲综合 | 好吊一区二区三区视频 | 午夜秋霞影院 | 成人91| 最新毛片网 | 欧美乱码精品一区二区三区 | 欧美亚洲色图视频 | 亚洲影音先锋 | 国产日韩欧美激情 | 一级做a在线观看 | 国产精品久久久久久久久动漫 | 四虎影视免费永久大全 | 欧美女人一区二区 | 69精品无码成人久久久久久 | 精品无码久久久久 | 国产精品theporn88 | 性xxxx另类xxⅹ | 欧美 日韩 国产 高清 | 日韩女优在线播放 | 中文字幕永久在线视频 | 清纯唯美亚洲 | 成人区一区二区 | 日本在线免费播放 | ass大乳尤物肉体pics | 欧美日韩亚洲天堂 | 一区二区美女视频 | 国产欧美一区二区三区在线看 | 精品三区 | 在线观看视频一区二区三区 | 日韩欧美二区 | 成年男女免费视频网站 | 日韩精品一区二区三区视频在线观看 | 射射综合网 | 精品国产乱码久久久久久1区2区 | 韩国伦理片免费看 | 日本不卡视频一区二区 | 欧美精品第二页 | 屁股夹体温计调教play | 国产 欧美 日本 | 激烈的性高湖波多野结衣 | 五月的婷婷 | www欧美精品 | 日本精品二区 | 日本一二三不卡视频 | 国产精品久久久久久在线观看 | 久久久久久91香蕉国产 |