2011-08-04 9 views
5

OpenGL pencerem ve wxWidget iletişim kutusu var. OpenGL'yi diyaloga aynalamak istiyorum. Yani ne yapmak niyetinde olduğunu: wxwidgets iletişim üzerineglReadPixels'ten yakalanan ekran görüntüsü wxWidgets iletişim kutusuna/paneline nasıl çizilir

  1. Yakalama opengl ekran görüntüsü
  2. Ekran bunu.

Herhangi bir fikir?

Güncelleme: Bu şu anda glReadPixels nasıl kullandıklarını (Ben de geçici olarak BMP dosyası kaydetmek için FreeImage kullanın ama wxImage doğrudan sevk etmeye yönelik bir yol varsa dosya tasarruf kaldırılacak bekliyoruz)

// Make the BYTE array, factor of 3 because it's RBG. 
BYTE* pixels = new BYTE[ 3 * width * height]; 

glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels); 

// Convert to FreeImage format & save to file 
FIBITMAP* image = FreeImage_ConvertFromRawBits(pixels, width, height, 3 * width, 24, 0x0000FF, 0xFF0000, 0x00FF00, false); 
FreeImage_Save(FIF_BMP, image, "C:/test.bmp", 0); 

// Free memory 
delete image; 
delete pixels; 
+1

nasıl Aradığınız glReadPixels yardımcı Umut? Bir wxImage oluşturmak ve onu oradan almak için döndürülen verileri kullanabilirsiniz. – Bart

+0

@Bart: Kodu ekleyebilmek için yayını güncelledim. Geri gönderilen verilerden nasıl bir wxImage oluşturacağımı gösterebilirseniz memnun olurum. – huy

cevap

1
// Add Image Support for all types 
    wxInitAllImageHandlers(); 

    BYTE* pixels = new BYTE[ 3 * width * height]; 
    glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels); 

    // width height pixels alpha 
    wxImage img(with, height, pixels, NULL); // I am not sure if NULL is permitted on the alpha channel, but you can test that yourself :). 

// Second method: 
wxImage img(width, heiht, true); 
img.SetData(pixels); 

Artık görüntüyü görüntülemek için kullanabilirsiniz, istediğiniz gibi jpg png bmp olarak kaydedebilirsiniz. Sadece bir diyalog içinde görüntülemek için, onu harddisc'e kaydetmeniz gerekmiyor, ama tabi ki yapabilirsiniz. Sadece görüntüyü yığınta oluşturun. http://docs.wxwidgets.org/stable/wx_wximage.html#wximagector

o