現在、アプリケーションでカラーピッキングを使用しています。これは PC で動作しますが、さまざまなデバイスで動作させるのに問題があります。
これはおそらく、デバイスによってコンテキストの設定が異なるためです。たとえば、私の知る限り、PC の色は 888 に設定されていますが、デバイスのデフォルトは 565 です。
色データを適切に取得できるように、OpenGL で現在のピクセル/色形式を取得する方法があるかどうか疑問に思っていましたか?
これは、私が使用している機能で、PC 上で正常に動作します。
inline void ProcessColourPick(GLubyte *out, KDfloat32 x, KDfloat32 y)
{
GLint viewport[4];
GLubyte pixel[3];
glGetIntegerv(GL_VIEWPORT,viewport);
//Read colour of pixel at a specific point in the framebuffer
glReadPixels(x,viewport[3]-y,1,1,
GL_RGB,GL_UNSIGNED_BYTE,(void *)pixel);
out[0] = pixel[0];
out[1] = pixel[1];
out[2] = pixel[2];
}
何か案は?