glReadPixels
を使用して、ピクセルを配列に読み込んでいます。しかし、このイメージのサイズは少し大きいので、私はそれを特定のサイズにリサイズします。画像のサイズを変更するOpenGL関数が見つかりません。この種の関数が存在するのでしょうか、画像のサイズを変更する独自の関数を書く必要がありますか?glReadPixelsから返されたサイズ変更イメージ
注:OSはUbuntu 14.04です。
これは画像を読み取るコードです。
int img_w = 640; // screen size
int img_h = 480;
uint8_t img[img_w*img_h*3];
glReadPixels(0, 0, img_w, img_h, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*)img);
// NEW image size
int new_w = 140;
int new_h = 140;
uint8_t new_img[new_w*new_h*3];
// Is there some opengl function to resize the image in `img` like:
gl_some_resize_func(img, new_w, new_h, new_img);
「glReadPixels」を使用することは、OpenGLでできる最も遅いものの1つであり、GPUから可能な限り同期してメモリを転送しないようにすべきだと聞いたことでしょう。サイズ変更に関しては、フルスクリーンクワッドを使用してより小さなフレームバッファにイメージをレンダリングした後、少量のピクセルをダウンロードする方が速いでしょう。 – PeterT
@PeterT私は本当に 'glReadPixles'の代替案を知らない。サイズを変更するには、新しい小さなフレームバッファを作成し、その上に原点 'img'をこのフレームバッファに直接投げることができます(OpenGLは自動的に"サイズ変更 "されますか?)、次に遅い' glReadPixels 'フレームバッファから読み込みますか? –
このチュートリアルで 'glReadPixels'(または' glBegin/glEnd'など)を使用する方法を教えてくれれば、OpenGL 3+用の最新版を見つけてください。あなたは長年にわたって廃止されていたレガシー機能を使用しています.OpenGLの学習を始めたばかりなので、正しい方法を学ぶことをお勧めします。 – ybungalobill