SDL проблема с глубиной цвета.... (screen = SDL_SetVideoMode(640,480,32, SDL_HWSURFACE|SDL_DOUBLEBUF);)

Модератор: Модераторы разделов

Ответить
#Ch@iNeD_W@Rri0R#
Сообщения: 25

SDL проблема с глубиной цвета....

Сообщение #Ch@iNeD_W@Rri0R# »

Код: Выделить всё

screen = SDL_SetVideoMode(640,480,32, SDL_HWSURFACE|SDL_DOUBLEBUF);

Только начал учить SDL, и сразу проблемы..... Задаю глубину цвета 32... Я так понимаю это 32 бита а не цвета, а у меня цвтов кагбудто штук 8..... Ставлю 0, что бы сам определил, тоже самое, даже хуже...
Из-за чего это может быть? Может настроить SDL библиотеки.... И
Athlon 2500+ / 768RAM / GeForce FX5200 / 2.6.15-1.2054_FC5
www.RockNewZ.com
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458
Контактная информация:

Re: SDL проблема с глубиной цвета....

Сообщение powerfox »

Для начала: в linux поддержка максимум 24 бит

Попробуй так:

Код: Выделить всё

screen = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_HWPALETTE);
Спасибо сказали:
#Ch@iNeD_W@Rri0R#
Сообщения: 25

Re: SDL проблема с глубиной цвета....

Сообщение #Ch@iNeD_W@Rri0R# »

powerfox писал(а):
03.06.2006 17:37
Для начала: в linux поддержка максимум 24 бит

Попробуй так:

Код: Выделить всё

screen = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_HWPALETTE);


Ничего совсем не изменилось... :(
Athlon 2500+ / 768RAM / GeForce FX5200 / 2.6.15-1.2054_FC5
www.RockNewZ.com
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458
Контактная информация:

Re: SDL проблема с глубиной цвета....

Сообщение powerfox »

SDL игрушки работают?
А можно весь код посмотреть?
Спасибо сказали:
#Ch@iNeD_W@Rri0R#
Сообщения: 25

Re: SDL проблема с глубиной цвета....

Сообщение #Ch@iNeD_W@Rri0R# »

powerfox писал(а):
03.06.2006 17:54
SDL игрушки работают?
А можно весь код посмотреть?


SDL игрушки не работают, только проблемы с SDL_mixer и SDL_image, но здесь я их не использую...
А цветов выходит примерно 3 :-/

Код: Выделить всё

if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ){
   printf("Unable to init SDL: %s\n", SDL_GetError());
   exit(1);
 }

 atexit(SDL_Quit);

 SDL_Surface *screen;
screen = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_HWPALETTE);
 if ( screen == NULL ){
   printf("Unable to set 640x480 video: %s\n", SDL_GetError());
   exit(1);
 }

 // КОД РИСОВАНИЯ
Athlon 2500+ / 768RAM / GeForce FX5200 / 2.6.15-1.2054_FC5
www.RockNewZ.com
Спасибо сказали:
#Ch@iNeD_W@Rri0R#
Сообщения: 25

Re: SDL проблема с глубиной цвета....

Сообщение #Ch@iNeD_W@Rri0R# »

powerfox писал(а):
03.06.2006 19:10
Можно код программы целиком?


Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include "SDL.h"


void Slock(SDL_Surface *screen);
void Sulock(SDL_Surface *screen);
void DrawPixel(SDL_Surface *screen, int x, int y, Uint8 R, Uint8 G, Uint8 B);
void DrawScene(SDL_Surface *screen);

/* ------------------------------------------- */
int main(int argc, char *argv[]){

 if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ){
   printf("Unable to init SDL: %s\n", SDL_GetError());
   exit(1);
 }

 atexit(SDL_Quit);

 SDL_WM_SetCaption("SDL Gfx Example #1","ex1");
 SDL_WM_SetIcon(SDL_LoadBMP("icon.bmp"), NULL);

 SDL_Surface *screen;
 screen = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_HWPALETTE);
 if ( screen == NULL ){
   printf("Unable to set 640x480 video: %s\n", SDL_GetError());
   exit(1);
 }

 int done=0;
 while(done == 0){

   SDL_Event event;

   while ( SDL_PollEvent(&event) ){
     if ( event.type == SDL_QUIT ){
      done = 1;
     }
     if ( event.type == SDL_KEYDOWN ){
       if ( event.key.keysym.sym == SDLK_ESCAPE ){
         done = 1;
       }
     }
   }

   DrawScene(screen);
 }

}


/* ------------------------------------------------------ */
void Slock(SDL_Surface *screen){

 if ( SDL_MUSTLOCK(screen) ){
   if ( SDL_LockSurface(screen) < 0 ){
     return;
   }
 }

}

/* ------------------------------------------------------ */
void Sulock(SDL_Surface *screen){

 if ( SDL_MUSTLOCK(screen) ){
   SDL_UnlockSurface(screen);
 }

}

/* ------------------------------------------------------ */
void DrawPixel(SDL_Surface *screen, int x, int y, Uint8 R, Uint8 G, Uint8 B){

 Uint32 color = SDL_MapRGB(screen->format, R, G, B);
 switch (screen->format->BytesPerPixel){
   case 1:  // Assuming 8-bpp
   {
     Uint8 *bufp;
     bufp = (Uint8 *)screen->pixels + y*screen->pitch + x; *bufp = color;
   } break;
   case 2: // Probably 15-bpp or 16-bpp
   {
     Uint16 *bufp;
     bufp = (Uint16 *)screen->pixels + y*screen->pitch/2 + x; *bufp = color;
   } break;
   case 3: // Slow 24-bpp mode, usually not used
   {
     Uint8 *bufp;
     bufp = (Uint8 *)screen->pixels + y*screen->pitch + x * 3;
     if(SDL_BYTEORDER == SDL_LIL_ENDIAN){
       bufp[0] = color;
       bufp[1] = color >> 8;
       bufp[2] = color >> 16;
     }else{
       bufp[2] = color;
       bufp[1] = color >> 8;
       bufp[0] = color >> 16;
     }
   } break;
   case 4: // Probably 32-bpp
   {
     Uint32 *bufp;
     bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;
     *bufp = color;
   } break;
 }

}

/* ------------------------------------------------------ */
void DrawScene(SDL_Surface *screen){

 Slock(screen);

 for(int x=0;x<640;x++){
   for(int y=0;y<480;y++){
     DrawPixel(screen, x,y,y/2,y/2,x/3);
   }
 }
 Sulock(screen);
 SDL_Flip(screen);
}

/* ------------------------------------------- */
Athlon 2500+ / 768RAM / GeForce FX5200 / 2.6.15-1.2054_FC5
www.RockNewZ.com
Спасибо сказали:
#Ch@iNeD_W@Rri0R#
Сообщения: 25

Re: SDL проблема с глубиной цвета....

Сообщение #Ch@iNeD_W@Rri0R# »

Да SDL галимо поставился что то... шас всё ништяк пошло... даже намечается проект :)
Athlon 2500+ / 768RAM / GeForce FX5200 / 2.6.15-1.2054_FC5
www.RockNewZ.com
Спасибо сказали:
Ответить