我想知道如何使用深度测试正确渲染曲面。就我而言,尽管已启用,但它无法正常工作。我尝试了许多组合,但无法弄清楚做错了什么,可能是OpenGL命令的某些顺序,或者可能是我完全不知道的事情。
我有这段代码,该代码使用opengl渲染我正在开发的2d游戏。我想启用z缓冲和深度测试以简化代码中的内容。我在线阅读了许多教程,并根据指示进行了更改,但无法弄清为什么它不起作用。
主函数的代码如下所示,我将两个正方形的z值分别更改为-10和-25并稍后交换它们,但是我总是在第一个正方形上渲染第一个正方形无论我使用什么值:
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('author_id')->unsigned();
$table->foreign('author_id')->references('id')->on('users')->onDelete('restrict');
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('restrict');
$table->string('title');
$table->string('slug')->unique();
$table->text('excerpt');
$table->mediumText('body');
$table->string('image')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
无论我将z分配给两个面的z值如何,最终结果总是相同的,结果可以看到here:
任何建议都将受到高度赞赏。
答案 0 :(得分:1)
设置要绘制的SDL表面时,是否在调用SDL_CreateWindow之前要求深度缓冲?
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);