2010-12-28 3 views
2

で問題を摘みコード化されました。私はゲーム環境でブロックを破壊したり作成したりすることができるピッキングプロセスに直面しています。色は、私は私のクラスのプロジェクトのために、実際のゲーム、マインクラフトの非常に基本的なレプリカを、作っていますOpenGLの

私は成功せずにOpenGLの独自のピッキングモードを使用しようと、数学ライブラリを使用して独自の線ピッカーを構築してきたが、このサイズのプロジェクトのための大規模な仕事に思えます。だから、私は色分けされたピッキング方法を使用することに決めました。これは、選択可能なすべてのオブジェクトを別の色でレンダリングし、マウスの位置で色を取得し、ピックしたオブジェクトを識別するために使用します。

私の現在のインタフェースは、地形のような構造を作成し、積み重ねられた多くの箱のちょうど3Dレンダリングです。私はまだテクスチャマッピングを行っていないので、すべてのボックスはグレーの灰色(照明が有効)です。

さて、いくつかの実際のコードのための時間:

これはテクスチャリングを有効にすると、初期化部分であり、照明など

glEnable(GL_DEPTH_TEST); 
glEnable(GL_TEXTURE_2D); 
glShadeModel(GL_SMOOTH); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
glEnable(GL_LIGHT1); 

マウスボタンがクリックされると、私はで色を取得しようマウスでカーソルの位置(ウィンドウの常に真ん中、実際には):

glDisable(GL_LIGHTING); 
glDisable(GL_TEXTURE_2D); 
glDisable(GL_DITHER); 
glDisable(GL_LIGHT0); 
glDisable(GL_LIGHT1); 
    renderColors(); 
    GLubyte pixels[3]; 
    glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, (void *)pixels); 
glEnable(GL_TEXTURE_2D); 
glEnable(GL_LIGHTING); 
glEnable(GL_DITHER); 
glEnable(GL_LIGHT0); 
glEnable(GL_LIGHT1); 

問題があり、無効では動作しないと私は常にグレー、iの異なる色合いのRGB値を取得しますn私のpixelsアレイ。

何が問題なのですか?

答えて

2

は、おそらくあなたは、カラーバッファをクリアし、Z-ファイティングを引き起こすか、または(z検定は「少ない」であれば)すべてでレンダリングされていないデプスバッファと、すべてのレンダリングされた色を無効にすることを忘れません。 swapbuffersコードを追加し、ColorRenderコードの後に​​レンダリングされるものを確認してください。

関連する問題