3

ウィンドウシステムにGLUTを使用して、いくつかの画像を画面に出力しています。また、画像をファイルに出力したいと思います。これは挑戦でした。一部のウィンドウ解像度(256x256、1024x1024、1920x1200など)では、glReadPixelsは画面とまったく同じ画像ファイルを生成します。ただし、ウィンドウのサイズを変更すると(たとえば、655x652、529x566で画面キャプチャを実行すると、画像がジグザグになり、ピクセルが直線的にシフトしたように見えます。

どんな助けでもありがたいです!

編集-glReadPixels呼び出しに至るまでのコードを追加しています。

glGetIntegerv(GL_VIEWPORT, dimensions);
width = dimensions[2];
height = dimensions[3];
screencapture = (unsigned char*)malloc(width*height*sizeof(unsigned char));
glReadPixels(0,0,width, height, GL_GREEN, GL_UNSIGNED_BYTE, screencapture);

編集2-マウスでウィンドウのサイズを変更すると、良い画像が生成される場合があることを忘れました。ちょうどいい解像度になったときに起こると思います。

4

1 に答える 1

3

問題の解決策は、各行の終わりにある4の倍数ではない余分なバイトを考慮する(スキップする)か、GL_PACK_ALIGNMENT1に変更する(を使用するglPixelStore)ことです。

(上記のコメントを参照)

于 2011-07-06T17:14:03.620 に答える