1. ホーム
  2. c++

[解決済み] glReadPixels() "data" 引数の使用法?

2022-02-19 20:05:17

質問内容

glReadPixelsを使って、画像から色データを取得しようとしています。glReadPixelsを使うはずなのですが、どうもうまくいきません。これはもっと大きなプロジェクトの一部ですが、今私が欲しいのは、これを正しく使う方法を知ることだけです。

調べたらこんなのが出てきました。

    void glReadPixels(GLint x, 
       GLint y, 
       GLsizei width, 
       GLsizei height, 
       GLenum format, 
       GLenum type, 
       GLvoid* data);

しかし、最後の引数に何を入れればいいのか、また、入れたとしてもどのように使えばいいのか、よくわかりません。助けていただけると本当に助かります。(例:使い方の簡単な例や、色を取得する方法など)

どのように解決するのですか?

data は、glReadPixels がデータを格納するために用意したバッファへのポインタを受け取ります。こんな感じ。

switch(format) {
case GL_BGR:
case GL_RGB:
    components = 3; break;

case GL_BGRA:
case GL_RGBA:
    components = 4; break;

case GL_ALPHA:
case GL_LUMINANCE:
    components = 1; break;
}

GLubyte *data = malloc(components * width * height);
if( data ) {
    glReadPixels(0, 0, width, height, format, GL_UNSIGNED_BYTE, data);
}