1

画面に PNG を描画するために SharpGL (OpenGL、WPF アプリケーション) を使用しています。ファイルを開き、バイトを読み取り、次のコードを使用して画像を描画しました。

SharpGL.OpenGL gl = args.OpenGL;

//gl.GetFloat(SharpGL.Enumerations.GetTarget.CurrentRasterPosition, data);
//gl.RasterPos(0, 0, 0, 1);
gl.DrawPixels(m_bitmapImage.PixelWidth, m_bitmapImage.PixelHeight, SharpGL.OpenGL.GL_BGRA, m_pixels);

画面上で画像を移動したいので、ラスター位置を変更すると、画像が描画された場所の開始点が移動することを理解していました。ラスター位置の値を何らかの方法で変更すると、画像が消えてしまいます。現在のラスター位置をフェッチして、それを関数に直接パイプしてRasterPosから、値を再度読み込もうとすると、からに変わります0, 0, 0, 1(258.5, 161.5, .5, 1画面幅の半分、画面高さの半分、.5 がどこにあるかわかりません)から、1)。手動で数字をいじっても、違いはありません。

4

1 に答える 1

0

次のようなものを試してください。

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, windowWidth, 0, windowHeight, -1, 1 );

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

glRasterPos( ... );
glDrawPixels( ... );

またはを使用しますglWindowPos()

于 2013-03-11T19:15:21.793 に答える