0

画面自体よりも解像度の低いテクスチャに画面をキャプチャしようとしています (画面にレンダリングし直し、ブラー/ブルーム効果を作成するため)、うまく機能しません。これを行うためにミップマップを使用できることは理解していますが、コマンドの正しいシーケンスを機能させることができません。

私の現在のコード:

width=1024;
height=1024;

glGenTextures(1, &texture);

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,  GL_MODULATE);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );

glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, width, height, 0);

// code for rendering the screen back on goes here
4

1 に答える 1

2

キャプチャとダウンフィルターを一度に行うことはできません。最初に全画面を大きなテクスチャにキャプチャする必要があります。次に、ミップマップの自動作成が有効になっている場合はミップマップを作成する必要があります。次に、そのテクスチャを使用してもう一度レンダリングし、ミップマップ レベルを適切に調整してください。

ただし、自動ミップマップ生成では通常ボックス フィルターが使用されるため、見た目が悪くなります。

代わりに、いくつかの FBO (Frame Buffer Objects) と GLSL シェーダーをセットアップします。これにより、すべてのステップをより細かく制御できます。

  • テクスチャで元の画像を作成する
  • 適切なガウス ローパス フィルタリングを適用する
  • フィルタリングと元の画像をフレーム バッファにブレンドする
于 2009-05-20T20:24:15.200 に答える