コード例 #1
0
ファイル: RenderLayout.hpp プロジェクト: dgkae/KlayGE
		void VertexStreamFormat(uint32_t index, vertex_elements_type const & vet)
		{
			vertex_streams_[index].format = vet;
			uint32_t size = 0;
			for (size_t i = 0; i < vet.size(); ++ i)
			{
				size += vet[i].element_size();
			}
			vertex_streams_[index].vertex_size = size;

			streams_dirty_ = true;
		}
コード例 #2
0
ファイル: RenderLayout.cpp プロジェクト: BitYorkie/KlayGE
	void RenderLayout::BindVertexStream(GraphicsBufferPtr const & buffer, vertex_elements_type const & vet,
		stream_type type, uint32_t freq)
	{
		BOOST_ASSERT(buffer);

		uint32_t size = 0;
		for (size_t i = 0; i < vet.size(); ++ i)
		{
			size += vet[i].element_size();
		}

		if (ST_Geometry == type)
		{
			for (size_t i = 0; i < vertex_streams_.size(); ++ i)
			{
				if (vertex_streams_[i].format == vet)
				{
					vertex_streams_[i].stream = buffer;
					vertex_streams_[i].vertex_size = size;
					vertex_streams_[i].type = type;
					vertex_streams_[i].freq = freq;
					return;
				}
			}

			StreamUnit vs;
			vs.stream = buffer;
			vs.format = vet;
			vs.vertex_size = size;
			vs.type = type;
			vs.freq = freq;
			vertex_streams_.push_back(vs);
		}
		else
		{
			instance_stream_.stream = buffer;
			instance_stream_.format = vet;
			instance_stream_.vertex_size = size;
			instance_stream_.type = type;
			instance_stream_.freq = freq;
		}

		streams_dirty_ = true;
	}