“bawię się” teraz w tworzenie mapki do gry w OpenGL, jednak nadszedł wreszcie czas na nałożenie tekstur. Tu jest problem, gdyż chciałbym do tego celu użyć obrazków PNG, lecz nie wiem za bardzo jak. Głównie znalazłem poradniki dotyczące nakładania tekstur BMP, co nie za bardzo mi odpowiada… Więc, jak te tekstury nałożyć? Czy GLUT nie zawiera jakichś “ułatwień” czasem?
#include
#include
#undef _UNICODE
#include "il.h"
#pragma comment( lib, "DevIL.lib" )
// Wow. DevIL is amazing.
// From http://gpwiki.org/index.php/DevIL:Tutorials:Basics
// The library consists of three sub-libraries:
// * IL - main DevIL library. It allows you to load and save images to files. Every function in this library have 'il' prefixed to their name.
// * ILU - this library contains functions for altering images. Every function in this library have 'ilu' prefixed to their name.
// * ILUT - this library connects DevIL with OpenGL. Every function in this library have 'ilut' prefixed to their name.
int main()
{
ilInit();
printf("DevIL has been initialized\n");
// Loading an image
ILboolean result = ilLoadImage( "tex1.png" ) ;
if( result == true )
{
printf("the image loaded successfully\n");
}
else
{
printf("The image failed to load\n" ) ;
ILenum err = ilGetError() ;
printf( "the error %d\n", err );
printf( "string is %s\n", ilGetString( err ) );
}
int size = ilGetInteger( IL_IMAGE_SIZE_OF_DATA ) ;
printf("Data size: %d\n", size );
ILubyte * bytes = ilGetData() ;
for( int i = 0 ; i < size; i++ )
{
// see we should see the byte data of the image now.
printf( "%d\n", bytes[i] );
}
}
Proszę bardzo. Plik jest raczej w poprawnym miejscu.
U mnie działa dobrze, tzn. jeśli jest plik, to go wczytuje i działa poprawnie, jeśli pliku nie ma, to wyskakuje ten sam problem co u ciebie. Upewnij się jeszcze raz czy ten plik jest w tym samym miejscu co exe i w “aktywnym folderze” aplikacji gdy uruchamiasz przez IDE. Spróbuj bez IDE odpalić (skopiuj brakujące DLLki, napisze ci których, szukaj ich w folderze z biblioteką)
więc tak: zmieniłem obrazek na inny: także nic. Spróbowałem to zrobić poza IDE, podałem mu DLL’ki i chyba też jest źle (nie wiem czy tak bo po włączeniu od razu się zamyka :/).
To może podeślij mi ten twój projekt i zobaczymy czy działa u mnie, może coś źle skonfigurowałem…
obrazek wsadziłem tam gdzie mam pliki *.cpp czyli w folderze glównym
Ja zmieniałem tylko na tyle żeby to u mnie skompilować, bo uzywam Linuka i instaluje tylko devki, jedyna różnica to to że plik .h znajdował się w i nie miałem biblioteki libdevil.a, tylko sam IL i ILUT (z dużych). Poza tym do takich testów nie tworzę projektów, tylko ręcznie kompiluję przez G++.
Plik wykonywalny i “aktywny” przy projektach zawsze znajduje się w innym folderze niż źródła, więc tam tego obrazka nawet nie wsadzaj.
Uruchom w konsoli ten program, albo dodaj jakiegoś zatrzymywacza na końcu i zobacz czy jak normalnie odpalasz to czy ładuje, czy nie, co ty nigdy konsolówek nie pisałeś i nie wiesz jak się takie problemy rozwiązuje?
Pisali też, żeby podać ścieżkę bezwzględną. Zrobiłem i nadal nic Próbowałem uruchomić plik poza IDE i nadal to samo… Chyba będę musiał się na razie zadowolić obrazkami BMP.
A tak na marginesie, to gdzie Code::Blocks szuka właściwie tych obrazków?
Wypisz do konsoli “aktualny folder”, np. wywołaj polecenie dir. Nie wiem czy na windowsach nowych to działa tak samo jak na dir z wine na linuksie, ale wypluwa coś takiego:
Te pogrubione to aktualny folder, którym jest “./”.
W tym wątku mowa jest właśnie o tej ścieżce i to nie jest problem Code::Blocksa, tylko ścieżki wykonywania.
Standardowo “aktualnym folderem” wykonywania projektu w C::B jest folder samego projektu (tam gdzie foldery src, obj itd).
W ustawieniach projektu w zakładce Build targets zmień dla Debug i Release “Execution working dir” z “.” na np. “./test” i w folderze “./test” trzymaj ten obrazek.