|
07.07.2011, 14:43
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Пишем 2d двиг
так как никто не переименовал мою тему про него,начну новую....
...
Вот если с 0 писать 2д(пока 2д) двиг,с чего начать?..(SetPixel есть cls тоже,да много чего есть,но говнокод конкретно,судя по коментам).
|
(Offline)
|
|
07.07.2011, 14:44
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Пишем 2d двиг
с выбора гапи.
|
(Offline)
|
|
07.07.2011, 14:47
|
#3
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Пишем 2d двиг
С написания ТЗ.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.07.2011, 14:48
|
#4
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Пишем 2d двиг
ок.гапи есть-так как платформа на arm,то кроме встроинки ничего....а для винды можно и к SDL приладить.(ща пока для портативки)
Что это?
|
(Offline)
|
|
07.07.2011, 14:58
|
#5
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Пишем 2d двиг
Техзадание
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.07.2011, 15:02
|
#6
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Пишем 2d двиг
ну...написать 2д двиг на максимум возможностей платфомы(приставки)..
|
(Offline)
|
|
07.07.2011, 15:12
|
#7
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Пишем 2d двиг
int LoadImage(loadimg img)
{
if(img.data==0) return 0;
int i,n;
uint16_t c,r1,b1,g1;
uint16_t out_w=img.width;
img.mask=0;
for(i=0;i<img.height;i++){
for(n=0;n<img.width;n++){
r1=img.data[((i*out_w)*3+n*3)];
g1=img.data[((i*out_w)*3+n*3)+1];
b1=img.data[((i*out_w)*3+n*3)+2];
c=MAKE_RGB565(r1,g1,b1);
img.data[i*img.width+n]=c;
}
}
return 1;
}
int LoadAnimImage(loadimg img,uint16_t f_w,uint16_t f_h,uint16_t f_c)
{
if(f_c==0)return 0;
LoadImage(img);
if(f_c>1){
if(img.width>f_w-1){
img.framecount=f_c;
img.f_width=f_w;
img.f_height=f_h;
}
}
return 1;
}
void DrawImage(uint16_t *screen,int x,int y,loadimg img,uint16_t fram)
{
int i,n;
uint16_t c;
uint16_t img_w=img.width;
uint16_t img_h=img.height;
if(img.f_width>0 && img.f_height>0){
img_w=img.f_width;
img_h=img.f_height;
}
if(fram>img.framecount)fram=img.framecount;
for(i=0;i<img_h;i++){
for(n=0;n<img_w;n++){
c=img.data[fram*(img_w*img_h)+i*img_w+n];
if(c!=img.mask)SetPixel(screen,x+i,y+n,c);
}
}
}
void TileImage(uint16_t *buff,loadimg img,int x,int y,uint16_t width,uint16_t height)
{
uint16_t i,n,w_c,h_c;
w_c=img.width/width;
h_c=img.height/height;
for(i=0;i<w_c;i++){
for(n=0;n<h_c;n++){
DrawImage(buff,img,x+img.width*i,y+img.width*n);
}
}
}
void SetMask(loadimg img,uint16_t c)
{
img.mask=c;
}
void Graphics(uint16_t* screens,int SCREENWIDTH,int SCREENHEIGHT){ //гапи приставки
//апи функции,прикольно,все через 4 идут(32бита на каждую получается почти)
_dprintf = FUNC(0x04);
gfx_init = FUNC(0x38);
gfx_set_framebuffer = FUNC(0x90);
gfx_set_display_screen= FUNC(0x54);
gfx_set_cammmode = FUNC(0x8c);
gfx_set_colorrop = FUNC(0x3c);
gfx_set_fgcolor = FUNC(0x44);
gfx_get_fgcolor = FUNC(0x48);
gfx_set_alpha = FUNC(0x74);
gfx_get_alpha = FUNC(0x78);
gfx_fillrect = FUNC(0xc4);
gfx_enable_feature = FUNC(0x7c);
gfx_flush = FUNC(0xc);
gfx_paint = FUNC(0x10);
gfx_load_image = FUNC(0x14);
gfx_free_image = FUNC(0x18);
gfx_bitblt = FUNC(0xB4);
gfx_sprite = FUNC(0xB8);
res_init = FUNC(0xD4);
res_get = FUNC(0xD8);
res_play = FUNC(0xDC);
res_stop = FUNC(0xE8);
fs_open = FUNC(0x13C);
fs_read = FUNC(0x140);
fs_write = FUNC(0x144);
fs_close = FUNC(0x148);
fs_seek = FUNC(0x14C);
get_time = FUNC(0x124);
get_keys = FUNC(0x100);
//get_keys2 = gpio_reg(0x60);//не хотит работать так,виснит....
//
static int firsttime=1;
gfx_rect_t rect;
gfx_init(NULL, 0);
rect.x = 0;
rect.y = 0;
rect.width = SCREENWIDTH;
rect.height = SCREENHEIGHT;
gfx_set_framebuffer(SCREENWIDTH,SCREENHEIGHT);
gfx_set_display_screen(&rect);
firsttime = 0;
cls(screens,0x0000);//так лучше
video_img.data = screens;
video_img.width = SCREENWIDTH;
video_img.height = SCREENHEIGHT;
video_img.img_type = IMG_TYPE_16BPP;
video_img.unk2 = 0;
video_img.pal_data = 0;//а палитры тю-тю
video_img.pal_size = 0;//нет палитры-нет размера
video_img.flags[0] = 0x80;
video_img.flags[1] = 0;
video_img.flags[2] = 0;
video_img.flags[3] = 0;
gfx_load_image(&video_img, &video_handle);
gfx_set_colorrop(0xcc);
}
void Render(void){
gfx_rect_t rect;
gfx_point2d_t pos;
rect.x = 0;
rect.y = 0;
rect.width =video_img.width ;
rect.height = video_img.height ;
pos.x=0;
pos.y=0;
gfx_bitblt(video_handle,&rect,&pos);
}
void ShutdownGraphics(void){
gfx_free_image(video_handle);
}
void cls(uint16_t* screens,uint16_t c){
int i;
for(i=0;i<video_img.width * video_img.height;i++) screens[i]=c;
//тут лучше так,меньше проходов нужно.
//screens=c;
}
void SetPixel(uint16_t* buff,uint16_t x,uint16_t y,uint16_t c)
{
if(y < video_img.height && y > 0) {
if(x < video_img.width && x > 0)buff[video_img.width*y+x]=c;
}
//так как буфер ограничен,не разрешим запись выходящих за грани пикселов
}
uint16_t GetPixel(uint16_t* buff,uint16_t x,uint16_t y)
{
uint16_t c=0x0000;
if(x < video_img.width && x > 0 ){
if(y < video_img.height && y > 0) c=buff[video_img.width*y+x];
}
return c;//пригодится,не разрешает просканить пкселы которые за гранью буффера..
}
void rect(uint16_t* buff,int x,int y,int h,int w,uint16_t c){
int i,n;
if(h==0 || w==0)return;
for(i=0;i<h;i++){
for(n=0;n<w;n++){
SetPixel(buff,i+x,n+y,c);
}
}
}
вот что есть,все кроме Graphics переписать придётся..?
|
(Offline)
|
|
07.07.2011, 15:19
|
#8
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Пишем 2d двиг
Есть наброски 2D двигателя могу поделиться, посмотришь как там все работает )
__________________
|
(Offline)
|
|
07.07.2011, 15:22
|
#9
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Пишем 2d двиг
Есть наброски 2D двигателя могу поделиться, посмотришь как там все работает )
|
на С или с++?всё равно давай,перепишем если что
|
(Offline)
|
|
07.07.2011, 15:38
|
#10
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Пишем 2d двиг
Сообщение от Костян
на С или с++?всё равно давай,перепишем если что
|
На C++ стучи в ICQ - 640109160
__________________
|
(Offline)
|
|
07.07.2011, 16:52
|
#11
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Пишем 2d двиг
Сообщение от Костян
Вот если с 0 писать 2д(пока 2д) двиг,с чего начать?..(SetPixel есть cls тоже,да много чего есть,но говнокод конкретно,судя по коментам).
|
начать нужно с:
1. внятного описания что уже есть и чего хочется получить (ты даже этого не умеешь).
в теме выяснилось, что у тебя железка что-то типа Dingoo c ARM (кстати какого поколения?) и неизвестной конфигурации (есть ли аппаратный блиттер? есть ли 3D чип?)
2. изучения чужих наработок, определения их слабых и сильных сторон.
может оказаться, что уже есть вполне годные библиотеки.
3. написания ТЗ (хотя бы для себя).
определиться с API, определиться с функциональностью.
Сообщение от Костян
так как никто не переименовал мою тему про него,начну новую....
|
и да, переименуйте тему пожалуйста в что-то более подходящее по смыслу.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
|
|
07.07.2011, 18:43
|
#12
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Пишем 2d двиг
Сообщение от Костян
на С или с++?всё равно давай,перепишем если что
|
Посмотри сюда, если знаком уже с API DirectX'a и C++ то дерзай, там полностью расписывают про создание 2D и 3D движка
__________________
|
(Offline)
|
|
08.07.2011, 05:57
|
#13
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Пишем 2d двиг
проц не динги а spmp8000...вот 2д:
4.3. Graphics Engine
A graphics engine provides 16-bit (RGB565/1555) operatio
including BitBLT with 3 ROP, alpha-blending, line drawing, patte
fill, sprite transparency with color-key ROP, bit-plane mask, a
index color expansion. In addition, it accelerates GUI operati
and graphics intensive applications such as GPS and games.
|
зы,объясните что такое BitBLT, line drawing,bit-plane mask, a
index color expansio, patte
fill
Последний раз редактировалось RegIon, 08.07.2011 в 07:37.
|
(Offline)
|
|
08.07.2011, 16:26
|
#14
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Пишем 2d двиг
BitBLT, line drawing (рисование линий?), bit-plane mask, a index color expansion, pattern fill (заливка шаблонов?).
Кликабельны большинство.
Слушай, Костян. Ты немного своей ленью начинаешь достовать. Google.com - знает всё что тебе нужно. Научись им пользоваться. Либо такое впечатление, что тебе это ваще нафиг не нада..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:13.
|