Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SDL a VS10

Ostatnio zmodyfikowano 2011-10-27 22:53
Autor Wiadomość
kemsai
Temat założony przez niniejszego użytkownika
SDL a VS10
» 2011-10-25 22:16:12
Witam.
Ostatnio przerzuciłem się z Deva na VS 2010 Premium i mam taki problem.
Korzystam z bilbioteki SDL, właściwie połowe przekopiowałem z deva gdzie wszystko leciało dobrze a w VS wogóle ne wyświetla obrazków... Dałem warunek sprawdzający czy wczytuje bez błędu i sie okazało zę raczej sie obrazek wczytać nie może z jakiegoś powodu.
Oto kod, w którym używam SDL

C/C++
#include "StdAfx.h"
#include "gra.h"

< code >
Gra::Gra( void )
{
    okno = NULL;
   
    zamykanie = false;
    mapa = new Plansza( 1 );
   
    tworzenieOkna();
    for( int i = 0; i < 100; i++ )
    {
        polozenieTla[ i ].h = 0;
        polozenieTla[ i ].w = 0;
        polozenieTla[ i ].x = 0;
        polozenieTla[ i ].y = 0;
    }
}


Gra::~Gra( void )
{
    SDL_FreeSurface( okno );
    //SDL_FreeSurface(elementyTla);
    delete mapa;
    SDL_Quit();
}

void Gra::tworzenieOkna()
{
    if(( SDL_Init( SDL_INIT_EVERYTHING ) ==- 1 ) )
    {
        return;
    }
   
    ladowanieGrafik();
    okno = SDL_SetVideoMode( 800, 600, 32, SDL_SWSURFACE );
}

void Gra::ladowanieGrafik()
{
    elementyTla = SDL_LoadBMP( "data/100.jpg" );
   
    //uint32_t color = SDL_MapRGB(elementyTla->format, 255, 0, 255);
    //SDL_SetColorKey(elementyTla, SDL_SRCCOLORKEY, color);
   
    int currentSprite = 0;
    int line = 0;
   
    for( int i = 0; i < 100; i++ )
    {
        if( currentSprite >= 8 )
        {
            currentSprite = 0;
            line++;
        }
       
        polozenieTla[ i ].h = 100;
        polozenieTla[ i ].w = 100;
        polozenieTla[ i ].x = currentSprite;
        polozenieTla[ i ].y += 100 * line;
        currentSprite += 100;
    }
}

void Gra::odwierzEkran()
{
    rysujPodloze( 0 );
    SDL_Flip( okno );
}

void Gra::rysujPodloze( int numer )
{
    punkt.x = 0;
    punkt.y = 0;
    punkt.w = 100;
    punkt.h = 100;
   
   
    for( int i = 0; i < 9; i++ )
    {
        for( int j = 0; j < 7; j++ )
        {
            punkt.x = 100 * i;
            punkt.y = 100 * j;
            SDL_BlitSurface( elementyTla, & polozenieTla[ numer ], okno, & punkt );
        }
    }
}
P-42784
Drraven
» 2011-10-26 08:23:43
"data/100.jpg"
może dodaj ./ albo nie masz wgl pliku :D i nie wiem czy na windowsie nie podawało się tak:
"data\\plik.plik"
P-42787
DejaVu
» 2011-10-26 08:29:59
To SDL wspiera pliki w formacie JPG???
P-42789
kemsai
Temat założony przez niniejszego użytkownika
» 2011-10-26 11:28:32
Aakurat zmieniłęm jpeg dla testu czy będzie działać. Bo było bmp i też nie działało.
P-42791
DejaVu
» 2011-10-26 11:40:46
No to nie stawiaj twierdzenia, że w Dev-C++ działał kod, a pod Visual C++ nie działa skoro go zmieniłeś. Ustaw również stosowny Working Directory w opcjach bo prawdopodobnie aplikacja uruchamia się w innym katalogu roboczym przez co nie widzi bitmap.
P-42792
kemsai
Temat założony przez niniejszego użytkownika
» 2011-10-26 11:47:32
Kod nawet wogóle nie zmieniony z deva też nie działał.
Ale tak wracając do głownego problemu to gdzie to working directorie można zmienić? I czy czasem nie mam dobrego skoro musiałem dokleić SDL.dll do tego folderu?
P-42793
DejaVu
» 2011-10-26 11:50:00
Do tego, czyli jakiego? Working Directory w opcjach projektu się ustawia.
P-42794
kemsai
Temat założony przez niniejszego użytkownika
» 2011-10-26 12:16:45
Zmieniłem i nic nie pomogło.
P-42795
« 1 » 2
  Strona 1 z 2 Następna strona