PDA

View Full Version : [C++ && OpenGL] Problema con le librerie per utente Linux


fbcyborg
27-10-2007, 14:19
Ciao a tutti,

sto facendo un corso di informatica grafica all'università ma purtroppo tutte le esercitazioni sono previste su calcolatori con winsozz installato.
Io programmo su Linux e ogni tanto mi trovo con qualche problema riguardante le librerie.

Ad esempio.. Ho un file con un
#include <windows.h> //Windows header file
e poi ci sono altre righe di codice, del tipo:
BITMAPFILEHEADER file_header;

Ora il problema è: qual'è l'equivalente di windows.h sotto Linux?
Come faccio con BITMAPFILEHEADER, che a quanto sembra è una macro per C++ sotto windows???

Grazie

71104
27-10-2007, 14:24
sto facendo un corso di informatica grafica all'università fighissimo!! per caso vai alla Sapienza e sei della specialistica di Informatica? ci vado pure io, e mi piacerebbe un sacco fare Grafica 3D alla specialistica; purtroppo però non me gusta il professore che c'è in questo periodo per quel corso :(

ma purtroppo tutte le esercitazioni sono previste su calcolatori con winsozz installato. ma ringrazia... :asd:

Io programmo su Linux e ogni tanto mi trovo con qualche problema riguardante le librerie.

Ad esempio.. Ho un file con un
#include <windows.h> //Windows header file
e poi ci sono altre righe di codice, del tipo:
BITMAPFILEHEADER file_header;

Ora il problema è: qual'è l'equivalente di windows.h sotto Linux?
Come faccio con BITMAPFILEHEADER, che a quanto sembra è una macro per C++ sotto windows??? il problema è che il formato dei bitmap che usano quella struct è un formato "di Windows", per così dire, e quindi gli header che trovi normalmente su Linux non ti permettono di gestire quel formato. se non trovi qualche libreria alternativa opensource che ti permetta di gestirlo posso cercarti la dichiarazione di quella e altre struct tra i sorgenti di ReactOS.

71104
27-10-2007, 14:28
se non trovi qualche libreria alternativa opensource che ti permetta di gestirlo posso cercarti la dichiarazione di quella e altre struct tra i sorgenti di ReactOS. qua c'è la pagina di quella struct sul Doxygen di ReactOS: http://www.reactos.org/generated/doxygen/d1/da9/structtagBITMAPFILEHEADER.html

e qua invece la pagina di MSDN: http://msdn2.microsoft.com/en-us/library/ms532321.aspx

71104
27-10-2007, 14:30
altro consiglio: prova ad installare il MinGW su Linux (il MinGW, non il gcc); in tal modo potrai generare su Linux eseguibili per Windows, quindi protrai programmare su Linux per Windows. l'unico problema sarà per testare; casomai prova Wine...

andbin
27-10-2007, 14:33
Ora il problema è: qual'è l'equivalente di windows.h sotto Linux?
Come faccio con BITMAPFILEHEADER, che a quanto sembra è una macro per C++ sotto windows???Non ci sono. Purtroppo questi header e queste definizioni (BITMAPFILEHEADER è una struttura non una macro) sono specifiche del Platform SDK della Microsoft. A questo livello la compatibilità con altri S.O. non Microsoft è praticamente zero.

fbcyborg
27-10-2007, 14:36
Si seguo con shaerf, ma il problema rimane...
Possibile che siccome sono utente Linux non posso fare la quarta esercitazione?
Non mi serve creare eseguibili per Winsozz da Linux, non me ne farei di nulla. Mi serve solo il corrispondente per Linux di quel file texture.h.

Se non c'è.. non la farò..

Grazie

Non ci sono. Purtroppo questi header e queste definizioni (BITMAPFILEHEADER è una struttura non una macro) sono specifiche del Platform SDK della Microsoft. A questo livello la compatibilità con altri S.O. non Microsoft è praticamente zero.
mmmh.. maledizione.. :(

fbcyborg
27-10-2007, 14:46
Scusate ma a me OpenGL è stato presentato come un sistema in cui il codice è portabile e si può compilare indipendentemente dalla piattaforma sulla quale ci si trova.
Allora non è vero???? :confused: :confused:
Possibile che in virtù della portabilità non sia possibile ottenere su Linux le stesse cose che ottengo su winsozz?
Come le faccio le textures su Linux?
Suppongo che esista una libreria .h per le texture, anche per Linux... perché non dovrei disporre di quella?

71104
27-10-2007, 14:55
Scusate ma a me OpenGL è stato presentato come un sistema in cui il codice è portabile e si può compilare indipendentemente dalla piattaforma sulla quale ci si trova. OpenGL si, ma il formato .bmp no

Possibile che in virtù della portabilità non sia possibile ottenere su Linux le stesse cose che ottengo su winsozz?
Come le faccio le textures su Linux? il formato .bmp non ha nulla a che vedere con le textures che carichi e passi ad OpenGL; le textures sono portabili, il formato .bmp di per se' anche in teoria, ma gli headers di Microsoft non lo sono.
hai due scelte:
1) ridichiara a mano le struct che ti servono; sta tutto in MSDN
2) non usare .bmp, usa un altro formato (se il tuo prof acconsente) e per caricare le immagini in quel formato usa una libreria portabile; per esempio puoi usare il formato PNG, che occupa pure meno spazio del BMP.

71104
27-10-2007, 14:58
Si seguo con shaerf, ma sei di Ingegneria Informatica? qui a Informatica purtroppo ad Informatica Grafica abbiamo un emerito c:cry:

fbcyborg
27-10-2007, 15:10
Si, faccio Ingegneria. :D
Ok, allora provo a dichiarare la struct a mano....

fbcyborg
27-10-2007, 15:21
Ok, allora provo a dichiarare la struct a mano....

Niente da fare.. poi non sa cosa sia WORD e DWORD... .
Vabbè pazienza.

fbcyborg
27-10-2007, 15:54
Allora.. dopo ore di smanettamento ho risolto il problema.
Non riuscivo a compilare un file header, texture.h (http://rafb.net/p/9siE5b73.html), perchè c'era un include windows.h e una funzione bool LoadBMP che non venivano digerite. Mi sono accorto che nella directory dell'esercitazione c'erano solo file TGA, quindi mi sono detto.. perché non commentare quella funzione e l'include?
Detto fatto e sono riuscito a compilarlo.

okay
27-10-2007, 17:54
Ciao a tutti,
sto facendo un corso di informatica grafica all'università ma purtroppo tutte le esercitazioni sono previste su calcolatori con winsozz installato...


....winsozz... come vedi non ti funziona perchè "winsozz", come lo chiamate, fà schifo, ma perchè sbagliate a programmarlo.

"winsozz" è un antico termine coniato da hackers che non riuscivano ad entrare in windows a differenza di linux che invece era/ ed è penetrabile come il burro...

Chiamato anche "winsozz" perchè il monopolio o codice della microsoft non è libero mentre linux si. Ma che bravi hackers.

Ma meno male che c'è windows

71104
27-10-2007, 18:41
Niente da fare.. che vuol dire niente da fare... le hai dichiarate o no quelle struct?

poi non sa cosa sia WORD e DWORD... . (come suggeriscono i nomi) rispettivamente interi da 2 e da 4 bytes.

Vabbè pazienza. a me sembra più che altro che tu abbia specificamente voglia di rinunciare... :mbe:

71104
27-10-2007, 18:44
ecco un link che ti sarà utile:
http://msdn2.microsoft.com/en-us/library/aa383751.aspx

fbcyborg
27-10-2007, 18:46
Allora.. dopo ore di smanettamento ho risolto il problema.
Non riuscivo a compilare un file header, texture.h (http://rafb.net/p/9siE5b73.html), perchè c'era un include windows.h e una funzione bool LoadBMP che non venivano digerite. Mi sono accorto che nella directory dell'esercitazione c'erano solo file TGA, quindi mi sono detto.. perché non commentare quella funzione e l'include?
Detto fatto e sono riuscito a compilarlo.
Mi autoquoto da solo. Forse a causa di un messaggio di spam non hai visto che ho aggiornato il thread. Ho risolto.
Grazie per il supporto 71104

71104
27-10-2007, 18:52
Mi autoquoto da solo. Forse a causa di un messaggio di spam non hai visto che ho aggiornato il thread. Ho risolto.
Grazie per il supporto 71104
ah ok, scusa ^^
di nulla

fbcyborg
27-10-2007, 18:54
ah ok, scusa ^^
Figurati!!! ;)
Anzi, grazie ancora per avermi segnalato quei link.
Penso che in caso potrò definire a mano tutte quelle strutture e risolvere il problema anche in quel modo.