2013-01-07 12 views
5

Sto creando questo programma in C++ che ha pulsanti, contenitori di pulsanti, caselle di chat, ecc. E voglio avvolgerlo attorno a trame.può un formato immagine bmp gestire la trasparenza

Voglio generare un bordo liscio per tutti i rettangoli che ho creato e non voglio che il metodo di tracciamento dei vertici faccia il lavoro per esso, dal momento che consuma più utilizzo della CPU e non sembra abbastanza buono, e io non 'so se può funzionare con coordinate texture (cioè glTexCoord (u, v) con glVertex2f (x, y) w/c deve essere solo 4 poiché è un quad)

utilizzo caricare textures using SDL_LoadBMP() w/c può caricare solo un formato di .bmp. (Non sono sicuro perché dice solo LoadBMP lì).

Quindi le mie domande sono:

* può una trasparenza maniglia .bmp formato? se sì, come si fa?

* puoi mostrarmi alcuni esempi di codice utilizzando SOIL per caricare l'immagine del formato .gif o altri formati in grado di gestire la trasparenza delle immagini?

* un quadruplo può gestire una forma irregolare/poligonale come esagono o stella senza disegnarne lo sfondo?

domanda aggiuntiva

* come importare una casella di testo primitivo che rende attraverso C++ OpenGL in modo da poter copiare i testi c'è negli appunti? come per la sessione di chat nel mio programma.


ho fatto la mia libreria che attira i GL_POINTS testo usando e non guardare bene quando si ridimensiona la finestra perché i punti sono stati sparsi-out. Ci vuole const char * per il testo per evitare #includendo la stringa < > perché voglio che il mio programma non dipenda dalle funzioni di base del C++.

Quindi la soluzione migliore è disegnarla usando bitmap.

Alcuni suggeriscono di disegnarlo usando le immagini quindi ho davvero bisogno della trasparenza perché voglio disegnare usando solo il quad.

risposta

0

Questa risposta risolve solo se un file bmp è in grado di gestire la trasparenza e come caricare un file PNG utilizzando SOIL, e penso che se si guarda oltre per inferenza mostra come caricare anche un file GIF. Secondo this wikipedia article, bmp è un tipo di file che supporta la trasparenza tramite un alpha channel. Ma secondo l'articolo this SO no. Nella mia esperienza personale non ho trovato un modo per far funzionare la trasparenza bmp. Quindi i file bmp teorici a 32 bit dovrebbero supportare la trasparenza, ma ne dubito. (Forse mi mangerò le mie parole?)

Ok, dal SOIL website, questo codice dice a come caricare un file PNG che gestisce la trasparenza:

/* load an image file directly as a new OpenGL texture */ 
GLuint tex_2d = SOIL_load_OGL_texture 
(
     "img.png" 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | 
     SOIL_FLAG_COMPRESS_TO_DXT 
); 
+0

Ho trovato un sito di tutorial [qui] (http: // www.softcity.com/article/creative/how-to-create-with-photoshop-a-bmp-file-with-transparency/zMTOwEzN) che mostra come aggiungere un canale alfa su un'immagine bmp usando un photoshop. I miei bmps erano in 24bpp quindi non ha un canale alfa su di esso. Non provo ancora a convertirlo in 32bpp. Inoltre ho scoperto che la mia funzione mipmap non ha i parametri di RGB + A w/c è l'alfa (RGBA), quindi ho ancora molte opzioni da fare. Nell'esempio del codice, come è possibile determinare le dimensioni delle immagini (w, h)? SOIL ha quella funzione per calcolarlo automaticamente? – mr5

+0

anche come determinare la dimensione del buffer da passare sull'ultimo parametro di gluBuild2DMIPMaps? Ho visto alcuni di questi ma non ho l'idea lì char unsigned * data = (unsigned char *) malloc (w * l * 4); e tali dati devono essere inseriti nel tipo di vuoto * (?) Sono confuso. Devo anche conoscere tutti i requisiti per caricare un'immagine. thnx – mr5

-1

BMP trasparenza è possibile in Photoshop, con un 24 bit profondità, almeno. Non appare come un'opzione di "imwrite" in Matlab.

Problemi correlati