単純に大フルスクリーンクワッド上に小さな走査線風合いをレンダリングの問題点は、テクスチャが何を作り、スケールアップすることがあるだったテクスチャーで、シングルピクセル走査線のセット(あなたの補間方法に応じて)非常に厚い、ぼやけ、および一般的に醜い。
代わりに並べるべきです1:1のピクセル対テクセル比を維持するような方法でクワッド全体のテクスチャ。これには、クワッドのテクスチャ座標が最も遠い範囲で1より大きくなるように調整し、テクスチャラップパラメータをクランプではなく繰り返すように設定することも含まれます。テクスチャが64x64ピクセルで、画面が1024x768ピクセルの場合、X軸でテクスチャを16回(1024/64)並べる必要があることがわかります。同様に、Y軸では12回(768/64)並べる必要があります。テクスチャと画面の実際の境界に合わせて、この計算を調整できます。これらの数値(16と12)をクワッドのテクスチャ座標の最大範囲として使用すると、はるかに優れた結果が得られます。タイルの正投影が現在どのように設定されているかに応じて、これをレンダリングするために変更する必要がない場合もあります。
または、シェーダーアプローチを使用することもできます。通常のシーンをテクスチャーにレンダリングし、そのテクスチャーをフルスクリーンクワッドとしてレンダリングしますが、ピクセルの奇数のラインをすべて省略します。シェーダーの画面の境界がわかっている場合は、これをかなり簡単に行うことができます(これは疑似コードであり、あいまいなHLSL風ですが、簡単に変換する必要があります)。
float2 screenSize;
sampler2D textureSampler;
float2 textureCoordinate;
float4 main () {
// Interpolation of texture coordinates means that we don't get nice
// integer boundaries we could take the modulus of.
float half_y = textureCoordinate.y * screenSize.y * 0.5;
float delta = round(half_y) - half_y;
float delta_squared = delta * delta;
if (delta_squared < 0.1) {
return texture2D(textureSampler, textureCoordinate);
}
return float4(0,0,0,0);
}