2015-05-14 5 views
0

Я хочу отобразить образец6 OptixSDK в QGLWidget.Дисплей OptiX sample6 в QGLWidget

Я прочитал тему в Nvidia OptiX Forum, но я не получаю вперед, потому что unfortunalety я понятия не имею, как я буду переопределить paintGL() метод.

Сначала я просто попытался прочитать OUTPUTBUFFER из sample6 и сохранили его в QImage

QImage img(m_width,m_height,QImage::Format_RGB32); 
QColor color; 
int idx; 
void* data = m_outputBuffer->map(); 
typedef struct { float r; float g; float b; float a;} rgb; 
rgb* rgb_data = (rgb*)data; 

for(unsigned int i=0; i<m_width*m_height; ++i){ 
    std::cout<<rgb_data[i].r<<","<<rgb_data[i].g<<","<<rgb_data[i].b<<std::endl; 
    float red = rgb_data[i].r; if(red>1.0) red=1.0; 
    float green = rgb_data[i].g; if(green>1.0) green=1.0; 
    float blue = rgb_data[i].b; if(blue>1.0) blue=1.0; 
    float alpha = rgb_data[i].a; if(alpha>1.0) alpha=1.0; 
    color.setRgbF(red,green,blue,alpha); 
    idx = floor((float)i/m_height); 

    img.setPixel(i-(idx*m_height), idx, color.rgb()); 

} 
m_outputBuffer->unmap(); 
img.save("optixSampleSix.png","PNG"); 

и метод упоминается Bei RoboMod в Nvidia OptiX Forum, но в обоих я получаю черную картину нонсенс. Тем не менее, если я использую функции, предоставив sutil, чтобы сохранить вывод в файле .ppm, все кажется правильным.

Так что мой вопрос: как правильно добраться из выходного буфера OptiX в визуализированную сцену openGL.

ответ

0

Как насчет непосредственного построения QImage?

uchar* data = (uchar *)m_outputBuffer->map(); 
QImage img(data, m_width, m_height, QImage::Format_ARGB32); 
// or maybe Format_RGBA8888 would work for you.. you have to check docs 
m_outputBuffer->unmap(); 
img.save("optixSampleSix.png","PNG"); 
+0

С построением QImage непосредственно и вашего QImage :: Format_ARGB32, я получаю правильный результат. –

 Смежные вопросы

  • Нет связанных вопросов^_^