Beispiel #1
0
	bool Dispatch(RenderTask* task, uint8_t) noexcept override
	{
		if (!texture)
			return false;
		ReadLock lock(mx);
		if (!vertexShader || !pixelShader || !mesh)
			return false;

		//init task data
		SkyRenderTaskData& taskData(*(SkyRenderTaskData*)task->Data.data());

		//create and populate task
		taskData.pixelShader = pixelShader.Get();
		taskData.vertexShader = vertexShader.Get();
		taskData.vertexBuffer = mesh->VertexBuffer<VertexPosition>();
		taskData.indexBuffer = mesh->IndexBuffer();
		taskData.count = (uint32_t)mesh->Count();
		taskData.texture = texture->View();
		
		//bind and return
		task->Sorting(nullptr, nullptr, nullptr);
		task->Bindings(SkyRenderTaskBind, SkyRenderTaskDraw, nullptr);
		return true;
	}