当前位置: 首页>>代码示例>>C++>>正文


C++ WImage::RemoveReference方法代码示例

本文整理汇总了C++中WImage::RemoveReference方法的典型用法代码示例。如果您正苦于以下问题:C++ WImage::RemoveReference方法的具体用法?C++ WImage::RemoveReference怎么用?C++ WImage::RemoveReference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WImage的用法示例。


在下文中一共展示了WImage::RemoveReference方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Load

void SpritesDemo::Load() {
	m_sprites[0] = new WSprite(m_app);
	m_sprites[0]->Load();
	WImage* img = new WImage(m_app);
	img->Load("Media/dummy.bmp");
	m_sprites[0]->SetImage(img);
	img->RemoveReference();

	m_sprites[1] = new WSprite(m_app);
	m_sprites[1]->Load();
	img = new WImage(m_app);
	img->Load("Media/checker.bmp");
	m_sprites[1]->SetImage(img);
	img->RemoveReference();
	m_sprites[1]->SetPosition(100, 100);
	m_sprites[1]->SetAlpha(0.5f);

	m_sprites[2] = new WSprite(m_app);
	WShader* pixel_shader = new CustomSpritePS(m_app);
	pixel_shader->Load();
	WEffect* fx = m_app->SpriteManager->CreateSpriteEffect(pixel_shader);
	pixel_shader->RemoveReference();
	WMaterial* mat = new WMaterial(m_app);
	mat->SetEffect(fx);
	fx->RemoveReference();
	m_sprites[2]->SetMaterial(mat);
	mat->RemoveReference();
	m_sprites[2]->Load();
	m_sprites[2]->SetPosition(200, 200);
	m_sprites[2]->SetSize(200, 200);
}
开发者ID:Hasan-Jawaheri,项目名称:Wasabi,代码行数:31,代码来源:Sprites.cpp

示例2: LoadFromStream

WError WMaterial::LoadFromStream(WFile* file, std::istream& inputStream) {
	_DestroyResources();

	VkDevice device = m_app->GetVulkanDevice();

	// read the UBO data
	uint numUBOs;
	vector<std::pair<VkDeviceSize, void*>> uboData;
	inputStream.read((char*)&numUBOs, sizeof(numUBOs));
	for (uint i = 0; i < numUBOs; i++) {
		VkDeviceSize size;
		inputStream.read((char*)&size, sizeof(size));
		uboData.push_back(std::pair<VkDeviceSize, void*>(size, W_SAFE_ALLOC(size)));
		inputStream.read((char*)uboData[uboData.size() - 1].second, size);
	}

	// read the texture data
	uint numTextures;
	vector<std::pair<uint, uint>> textureData;
	inputStream.read((char*)&numTextures, sizeof(numTextures));
	for (uint i = 0; i < numTextures; i++) {
		uint tid, index;
		inputStream.read((char*)&tid, sizeof(tid));
		inputStream.read((char*)&index, sizeof(index));
		textureData.push_back(std::pair<uint, uint>(tid, index));
	}
	uint fxId;
	inputStream.read((char*)&fxId, sizeof(fxId));

	// load dependencies
	WEffect* fx;
	WError err = file->LoadAsset<WEffect>(fxId, &fx);
	if (err) {
		err = SetEffect(fx);
		fx->RemoveReference();
		if (err) {
			for (uint i = 0; i < textureData.size() && err; i++) {
				WImage* tex;
				err = file->LoadAsset<WImage>(textureData[i].first, &tex);
				if (err) {
					err = SetTexture(textureData[i].second, tex);
					tex->RemoveReference();
				}
			}
		}
	}

	if (err) {
		if (m_uniformBuffers.size() != uboData.size())
			err = WError(W_INVALIDFILEFORMAT);
		else {
			for (uint i = 0; i < m_uniformBuffers.size() && err; i++) {
				UNIFORM_BUFFER_INFO* UBO = &m_uniformBuffers[i];
				if (uboData[i].first != UBO->descriptor.range)
					err = WError(W_INVALIDFILEFORMAT);
				else {
					void* pData;
					VkResult vkRes = vkMapMemory(device, m_uniformBuffers[i].memory, 0, UBO->descriptor.range, 0, (void **)&pData);
					if (vkRes)
						err = WError(W_UNABLETOMAPBUFFER);
					else {
						memcpy(pData, uboData[i].second, UBO->descriptor.range);
						vkUnmapMemory(device, m_uniformBuffers[0].memory);
					}
				}
			}
		}
	}

	for (uint i = 0; i < uboData.size(); i++)
		W_SAFE_FREE(uboData[i].second);

	if (!err)
		_DestroyResources();

	return err;
}
开发者ID:Hasan-Jawaheri,项目名称:Wasabi,代码行数:77,代码来源:WMaterial.cpp


注:本文中的WImage::RemoveReference方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。