2011-08-04 19 views
5

Tôi có một cửa sổ OpenGL và một hộp thoại wxWidget. Tôi muốn phản chiếu OpenGL cho hộp thoại. Vì vậy, những gì tôi có ý định làm là:Cách vẽ ảnh chụp màn hình được chụp từ glReadPixels sang hộp thoại/bảng điều khiển wxWidgets

  1. Chụp ảnh chụp màn hình của OpenGL
  2. hiển thị nó vào hộp thoại wxwidgets.

Bất kỳ ý tưởng nào?

Cập nhật: Đây là cách mà tôi hiện đang sử dụng glReadPixels (Tôi cũng tạm thời sử dụng FreeImage để lưu vào tập tin BMP, nhưng tôi hy vọng tiết kiệm tập tin phải được loại bỏ nếu có một cách chuyển nó trực tiếp đến wxImage)

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

glReadPixels How are you gọi? Bạn có thể sử dụng dữ liệu được trả về để tạo một wxImage và lấy nó từ đó. – Bart

+0

@Bart: Tôi đã cập nhật bài đăng để bao gồm mã. Tôi đánh giá cao nếu bạn có thể chỉ cho tôi cách tạo một wxImage từ dữ liệu được trả về. – huy

Trả lời

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); 

Giờ đây, bạn có thể sử dụng hình ảnh để hiển thị, lưu dưới dạng jpg png bmp tùy thích. Đối với chỉ hiển thị trong một hộp thoại, bạn không cần phải lưu nó vào đĩa cứng mặc dù, tất nhiên, bạn có thể. Chỉ cần tạo hình ảnh trên heap sau đó. http://docs.wxwidgets.org/stable/wx_wximage.html#wximagector

Hy vọng nó giúp

Các vấn đề liên quan