2013-01-07 30 views
5

Tworzę ten program C++, który ma przyciski, pojemniki przycisk, pola czatu, itp. I chcę go otoczyć teksturami.może bmp format obrazu uchwyt przezroczystość

Chcę wygenerować gładką krawędź dla wszystkich utworzonych prostokątów, a nie chcę, aby metoda drukowania wierzchołków wykonywała dla niej pracę, ponieważ zużywa ona więcej obciążenia procesora i nie wygląda to całkiem dobrze, a ja nie „wiem, czy to może pracować z współrzędnych tekstury (tj glTexCoord (u, v) z glVertex2f (x, y) w/c powinno być tylko 4, ponieważ jest quad)

użyć do załadowania tekstury przy użyciu SDL_LoadBMP() w/c można załadować tylko format .bmp. (Nie jestem tego pewien, ponieważ mówi tylko LoadBMP tam).

Więc moje pytania to:

* Czy przejrzystość uchwyt Format .bmp? jeśli tak, jak to zrobić?

* czy możesz pokazać mi kilka próbek kodu przy użyciu SOIL, aby załadować obraz formatu .gif lub innych formatów obsługujących przezroczystość obrazu?

* Czy quad może obsługiwać kształt nieregularny/wielokątny, taki jak sześciokąt lub gwiazda, bez rysowania tła?

dodatkowe pytanie

* jak importować prymitywny tekstowe, który renderuje do C++ opengl więc mogę kopiować teksty tam w schowku? co do sesji czatowania w moim programie.


zrobiłem własną bibliotekę, która rysuje tekstowych za pomocą GL_POINTS i podczas zmiany rozmiaru okna, ponieważ punkty zostały rozłożone-out nie wygląda dobrze. Aby tekst mógł ominąć ciąg znaków, należy użyć znaku stałego *, aby uniknąć #include <> ponieważ chcę, aby mój program nie był zależny od podstawowych funkcji C++.

Lepszym rozwiązaniem jest narysowanie go za pomocą bitmap.

Niektórzy sugerują, aby narysować go za pomocą obrazów, więc naprawdę potrzebuję przezroczystości, ponieważ chcę ją rysować tylko za pomocą quada.

Odpowiedz

0

Ta odpowiedź dotyczy tylko tego, czy plik bmp może obsługiwać przezroczystość i jak załadować plik PNG przy użyciu GLEBY, i myślę, że jeśli spojrzysz dalej przez wnioskowanie, to pokaże ci również, jak załadować plik gif. Według this wikipedia article, bmp jest jednym typem pliku, który obsługuje przezroczystość przez alpha channel. Ale według artykułu this SO nie. Z własnego doświadczenia nie znalazłem sposobu, aby zapewnić przejrzystość bmp. Teoretycznie 32-bitowe pliki bmp mają wspierać przezroczystość, ale wątpię w to. (Może będę jeść moje słowa?)

Ok, z SOIL website, kod ten opowiada jak załadować plik PNG, który obsługuje przezroczystość:

/* 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

Znalazłem stronę samouczka [tutaj] (http: // www.softcity.com/article/creative/how-to-create-with-photoshop-a-bmp-file- with-transparency/zMTOwEzN) pokazujące, jak dodać kanał alfa na obrazie bmp przy użyciu programu Photoshop. Moje bmps były w 24bpp, więc nie ma na nim kanału alfa. Nie próbuję jeszcze konwertować tego na 32bpp. Również odkryłem, że moja funkcja mipmap nie ma parametrów RGB + A w/c jest alfą (RGBA), więc nadal mam wiele opcji do zrobienia. W swoim przykładzie kodu, w jaki sposób mogę określić wymiary obrazów (w, h)? czy Gleba ma tę funkcję, aby ją automatycznie obliczyć? – mr5

+0

również jak określić rozmiar bufora, który ma być przekazany na ostatnim parametrze gluBuild2DMIPMaps? Widziałem niektóre z nich, ale nie mam pomysłu tam unsigned char * data = (unsigned char *) malloc (w * l * 4); i że dane mają zostać wprowadzone do typu pustki * (?) Jestem zdezorientowany. Muszę również znać wszystkie wymagania, aby załadować obraz. thnx – mr5

-1

BMP przejrzystość jest możliwe w Photoshopie, z 24 bitów głębokość, przynajmniej. Nie pojawia się jako opcja "imwrite" w Matlab.