• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ MFDebug_Assert函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中MFDebug_Assert函数的典型用法代码示例。如果您正苦于以下问题:C++ MFDebug_Assert函数的具体用法?C++ MFDebug_Assert怎么用?C++ MFDebug_Assert使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



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

示例1: MFFileSystem_UnregisterFileSystem

void MFFileSystem_UnregisterFileSystem(MFFileSystemHandle filesystemHandle)
{
	MFDebug_Assert((uint32)filesystemHandle < gDefaults.filesys.maxFileSystems, "Invalid filesystem");

	GET_MODULE_DATA(MFFileSystemState);

	MFFileSystem *pFS = pModuleData->ppFileSystemList[filesystemHandle];
	MFDebug_Assert(pFS, "Filesystem not mounted");

	if(pFS->callbacks.UnregisterFS)
		pFS->callbacks.UnregisterFS();

	if(pFS->thread)
	{
		// terminate job thread
		MFJob *pJob = NewJob(pFS);
		PostJob(pFS, pJob);
		while(pJob->status != MFJS_Finished)
		{
			// yield
		}

		MFThread_DestroySemaphore(pFS->semaphore);
		pFS->jobs.Deinit();
		MFHeap_Free(pFS->ppJobQueue);
	}

	pModuleData->gFileSystems.Destroy(pFS);
	pModuleData->ppFileSystemList[filesystemHandle] = NULL;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:30,代码来源:MFFileSystem.cpp


示例2: MFVertex_UnlockIndexBuffer

MF_API void MFVertex_UnlockIndexBuffer(MFIndexBuffer *pIndexBuffer)
{
	MFDebug_Assert(pIndexBuffer, "NULL index buffer");
	MFDebug_Assert(pIndexBuffer->bLocked, "Index buffer not locked!");

	ID3D11Buffer *pIB = (ID3D11Buffer*)pIndexBuffer->pPlatformData;
	if(pIB)
		pIB->Release();

	D3D11_BUFFER_DESC bd;
	MFZeroMemory(&bd, sizeof(bd));
	bd.Usage = D3D11_USAGE_IMMUTABLE;
	bd.ByteWidth = sizeof(WORD) * pIndexBuffer->numIndices;
	bd.BindFlags = D3D11_BIND_INDEX_BUFFER;
	
	D3D11_SUBRESOURCE_DATA initData;
	MFZeroMemory(&initData, sizeof(initData));
	initData.pSysMem = pIndexBuffer->pLocked;

	HRESULT hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &pIB);
	MFDebug_Assert(SUCCEEDED(hr), "Couldn't create index buffer!");
	if (FAILED(hr))
		return;

	pIndexBuffer->pPlatformData = pIB;

	MFHeap_Free(pIndexBuffer->pLocked);

	pIndexBuffer->pLocked = NULL;
	pIndexBuffer->bLocked = false;
}
开发者ID:FujiGameJam,项目名称:fuji,代码行数:31,代码来源:MFVertex_D3D11.cpp


示例3: DebugMenu_AddMenuTo

MF_API void DebugMenu_AddMenuTo(const char *name, Menu *pParent, DebugCallback callback, void *userData)
{
	MFDebug_Assert(pParent, "Invalid parent menu.");
	MFDebug_Assert(pParent->type == MenuType_Menu, MFStr("Cant add menu '%s', Parent is not of Menu type.", name));
	MFDebug_Assert(MFString_Length(name) < 64, "Max of 64 characters in Menu Name.");
	MFDebug_Assert(pParent->numChildren < MENU_MAX_CHILDREN, MFStr("Maximum number of items in menu: '%s'", pParent->name));

//	Menu *pMenu = Heap_New(Menu);
	Menu *pMenu = new Menu;

	MFString_Copy(pMenu->name, name);
	pMenu->type = MenuType_Menu;

	pMenu->pParent = pParent;
	pMenu->menuDepth = pParent->menuDepth+1;

	pMenu->numChildren = 0;
	pMenu->selection = 0;

	pMenu->pCallback = callback;
	pMenu->pUserData = userData;

	pParent->pChildren[pParent->numChildren] = pMenu;
	++pParent->numChildren;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:25,代码来源:DebugMenu.cpp


示例4: MFTexture_CreatePlatformSpecific

// interface functions
void MFTexture_CreatePlatformSpecific(MFTexture *pTexture, bool generateMipChain)
{
	MFCALLSTACK;

	HRESULT hr;
	MFTextureTemplateData *pTemplate = pTexture->pTemplateData;

	// create texture
	D3DFORMAT platformFormat = (D3DFORMAT)MFTexture_GetPlatformFormatID(pTemplate->imageFormat, MFDD_D3D9);
	hr = D3DXCreateTexture(pd3dDevice, pTemplate->pSurfaces[0].width, pTemplate->pSurfaces[0].height, generateMipChain ? 0 : 1, 0, platformFormat, D3DPOOL_MANAGED, (IDirect3DTexture9**)&pTexture->pInternalData);

	MFDebug_Assert(hr != D3DERR_NOTAVAILABLE, MFStr("LoadTexture failed: D3DERR_NOTAVAILABLE, 0x%08X", hr));
	MFDebug_Assert(hr != D3DERR_OUTOFVIDEOMEMORY, MFStr("LoadTexture failed: D3DERR_OUTOFVIDEOMEMORY, 0x%08X", hr));
	MFDebug_Assert(hr != D3DERR_INVALIDCALL, MFStr("LoadTexture failed: D3DERR_INVALIDCALL, 0x%08X", hr));
	MFDebug_Assert(hr != D3DXERR_INVALIDDATA, MFStr("LoadTexture failed: D3DXERR_INVALIDDATA, 0x%08X", hr));

	MFDebug_Assert(hr == D3D_OK, MFStr("Failed to create texture '%s'.", pTexture->name));

	IDirect3DTexture9 *pTex = (IDirect3DTexture9*)pTexture->pInternalData;

	// copy image data
	D3DLOCKED_RECT rect;
	pTex->LockRect(0, &rect, NULL, 0);
	MFCopyMemory(rect.pBits, pTemplate->pSurfaces[0].pImageData, pTemplate->pSurfaces[0].bufferLength);
	pTex->UnlockRect(0);

	// filter mip levels
	if(generateMipChain)
		D3DXFilterTexture(pTex, NULL, 0, D3DX_DEFAULT);
}
开发者ID:jacob-carlborg,项目名称:fuji,代码行数:31,代码来源:MFTexture_D3D9.cpp


示例5: MFCheckForOpenGLError

bool MFCheckForOpenGLError(bool bBreakOnError)
{
	GLenum err = glGetError();
	if(err != GL_NO_ERROR)
	{
#if !defined(MF_OPENGL_ES)
		const GLubyte *errorString = gluErrorString(err);
		if(bBreakOnError)
		{
			MFDebug_Assert(err == GL_NO_ERROR, MFStr("OpenGL Error %04X: %s", err, errorString));
		}
		else
		{
			MFDebug_Warn(1, MFStr("OpenGL Error %04X: %s", err, errorString));
		}
#else
		if(bBreakOnError)
		{
			MFDebug_Assert(err == GL_NO_ERROR, MFStr("OpenGL Error: %04X", err));
		}
		else
		{
			MFDebug_Warn(1, MFStr("OpenGL Error: %04X", err));
		}
#endif
		return true;
	}
	return false;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:29,代码来源:MFRenderer_OpenGL.cpp


示例6: MFBegin

//---------------------------------------------------------------------------------------------------------------------
MF_API void MFBegin(uint32 vertexCount)
{
	MFDebug_Assert(phase == 1, "not in order 1");

	MFDebug_Assert(vertexCount > 0, "Invalid primitive count.");

	currentPrim.numVertices = vertexCount;
	if(gImmitateQuads)
		currentPrim.numVertices *= 3;

	// create an appropriate vertex buffer
	pVB = MFVertex_CreateVertexBuffer(pDecl, currentPrim.numVertices, MFVBType_Scratch);

	currentPrim.pMeshState = MFStateBlock_CreateTemporary(gLargeStateblock ? 256 : 64);
	MFStateBlock_SetRenderState(currentPrim.pMeshState, MFSCRS_VertexDeclaration, pDecl);
	MFStateBlock_SetRenderState(currentPrim.pMeshState, MFSCRS_VertexBuffer0, pVB);

	MFVertex_LockVertexBuffer(pVB, (void**)&pLocked);

	currentVert = 0;

	current.u = current.v = 0.0f;
	current.colour = 0xFFFFFFFF;
	current.normal.x = current.normal.z = 0.0f;
	current.normal.y = 1.0f;

	phase = 2;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:29,代码来源:MFPrimitive_D3D11.cpp


示例7: MFVertex_LockVertexBuffer

MF_API void MFVertex_LockVertexBuffer(MFVertexBuffer *pVertexBuffer, void **ppVertices)
{
	MFDebug_Assert(pVertexBuffer, "Null vertex buffer");
	MFDebug_Assert(!pVertexBuffer->bLocked, "Vertex buffer already locked!");

	if(pVertexBuffer->bufferType == MFVBType_Dynamic)
	{
		ID3D11Buffer *pVB = (ID3D11Buffer*)pVertexBuffer->pPlatformData;

		D3D11_MAPPED_SUBRESOURCE subresource;
		D3D11_MAP map = (pVertexBuffer->bufferType == MFVBType_Dynamic) ? D3D11_MAP_WRITE_DISCARD : D3D11_MAP_WRITE;
		HRESULT hr = g_pImmediateContext->Map(pVB, 0, map, D3D11_MAP_FLAG_DO_NOT_WAIT, &subresource);

		if(hr == DXGI_ERROR_WAS_STILL_DRAWING)
		{
			MFDebug_Message("waiting on vertex buffer lock");
			hr = g_pImmediateContext->Map(pVB, 0, map, 0, &subresource);
		}

		MFDebug_Assert(SUCCEEDED(hr), "Failed to map vertex buffer");

		pVertexBuffer->pLocked = subresource.pData;
	}
	else
	{
		pVertexBuffer->pLocked = MFHeap_Alloc(pVertexBuffer->numVerts*pVertexBuffer->pVertexDeclatation->pElementData[0].stride, MFHeap_GetHeap(MFHT_ActiveTemporary));
	}

	if(ppVertices)
		*ppVertices = pVertexBuffer->pLocked;

	pVertexBuffer->bLocked = true;
}
开发者ID:FujiGameJam,项目名称:fuji,代码行数:33,代码来源:MFVertex_D3D11.cpp


示例8: MFDebug_Assert

void MFPoolHeap::Init(int num, size_t size, void *pMem, size_t memsize)
{
	MFDebug_Assert(num > 0 && size >= 4 && (size & 3) == 0, "Bad args");

	itemSize = size;
	numItems = num;
	pNext = NULL;
#if !defined(MF_RETAIL)
	peakNumUsed = 0;
#endif

	// Get the memory for the heap
	if(pMem)
	{
		MFDebug_Assert(memsize > num*size, "Not enought memory");

		pStorage = pMem;
		bOwnStorage = false;
	}
	else
	{
		pStorage = MFHeap_Alloc(num*size);
		bOwnStorage = true;
	}

	DeleteAll();
}
开发者ID:RemedyGameJam,项目名称:fuji,代码行数:27,代码来源:MFPoolHeap.cpp


示例9: MFCollision_RayMeshTest

bool MFCollision_RayMeshTest(const MFVector& rayPos, const MFVector& rayDir, MFCollisionItem *pMesh, MFRayIntersectionResult *pResult)
{
	MFDebug_Assert(pMesh->pTemplate->type == MFCT_Mesh, "Item is not a collision mesh");

	MFDebug_Assert(false, "No dice..");

	return false;
}
开发者ID:RemedyGameJam,项目名称:fuji,代码行数:8,代码来源:MFCollision.cpp


示例10: MFCollision_SphereMeshTest

bool MFCollision_SphereMeshTest(const MFVector &spherePos, float radius, MFCollisionItem *pMesh, MFCollisionResult *pResult)
{
	MFDebug_Assert(pMesh->pTemplate->type == MFCT_Mesh, "Item is not a collision mesh");

	MFDebug_Assert(false, "No dice..");

	return false;
}
开发者ID:RemedyGameJam,项目名称:fuji,代码行数:8,代码来源:MFCollision.cpp


示例11: MFFileNative_Open

int MFFileNative_Open(MFFile *pFile, MFOpenData *pOpenData)
{
	MFCALLSTACK;

	MFDebug_Assert(pOpenData->cbSize == sizeof(MFOpenDataNative), "Incorrect size for MFOpenDataNative structure. Invalid pOpenData.");
	MFOpenDataNative *pNative = (MFOpenDataNative*)pOpenData;

	int flags = 0;

	if(pOpenData->openFlags & MFOF_Read)
	{
		if(pNative->openFlags & MFOF_Write)
		{
			flags = O_RDWR | O_CREAT;
		}
		else
		{
			flags = O_RDONLY;
		}
	}
	else if(pOpenData->openFlags & MFOF_Write)
	{
		flags = O_WRONLY | O_CREAT;
	}
	else
	{
		MFDebug_Assert(0, "Neither MFOF_Read nor MFOF_Write specified.");
	}

	int file = open(pNative->pFilename, flags);
	if(file == -1)
	{
//		MFDebug_Warn(3, MFStr("Failed to open file '%s'.", pNative->pFilename));
		pFile->pFilesysData = 0;
		return -1;
	}

	pFile->pFilesysData = (void*)(size_t)file;
	pFile->createFlags = pOpenData->openFlags;
	pFile->offset = 0;

	struct stat fileStats;
	if(fstat(file, &fileStats) == -1)
	{
		close(file);
		pFile->pFilesysData = 0;
		return -1;
	}

	pFile->length = fileStats.st_size;

#if defined(_DEBUG)
	MFString_Copy(pFile->fileIdentifier, pNative->pFilename);
#endif

	return 0;
}
开发者ID:FujiGameJam,项目名称:fuji,代码行数:57,代码来源:MFFileSystemNative_Linux.cpp


示例12: MFFileNative_Open

int MFFileNative_Open(MFFile *pFile, MFOpenData *pOpenData)
{
	MFCALLSTACK;

#if defined(_USE_CRT_FOR_NULL_DRIVERS)
	MFDebug_Assert(pOpenData->cbSize == sizeof(MFOpenDataNative), "Incorrect size for MFOpenDataNative structure. Invalid pOpenData.");
	MFOpenDataNative *pNative = (MFOpenDataNative*)pOpenData;

	int flags = 0;
	const char *pAccess = "";

	if(pOpenData->openFlags & MFOF_Read)
	{
		if(pNative->openFlags & MFOF_Write)
		{
			pAccess = "w+b";
		}
		else
		{
			pAccess = "rb";
		}
	}
	else if(pOpenData->openFlags & MFOF_Write)
	{
		pAccess = "wb";
	}
	else
	{
		MFDebug_Assert(0, "Neither MFOF_Read nor MFOF_Write specified.");
	}

	FILE *pF = fopen(pNative->pFilename, pAccess);
	if(pF == NULL)
	{
//		MFDebug_Warn(3, MFStr("Failed to open file '%s'.", pNative->pFilename));
		pFile->pFilesysData = 0;
		return -1;
	}

	pFile->pFilesysData = (void*)pF;
	pFile->createFlags = pOpenData->openFlags;
	pFile->offset = 0;

	fseek(pF, 0, SEEK_END);
	pFile->length = ftell(pF);
	fseek(pF, 0, SEEK_SET);

#if defined(_DEBUG)
	MFString_Copy(pFile->fileIdentifier, pNative->pFilename);
#endif

	return 0;
#else
	return -1;
#endif
}
开发者ID:FujiGameJam,项目名称:fuji,代码行数:56,代码来源:MFFileSystemNative_NaCl.cpp


示例13: MFEnd

//---------------------------------------------------------------------------------------------------------------------
MF_API void MFEnd()
{
	MFDebug_Assert(phase == 2, "not in order 2");

	MFVertex_UnlockVertexBuffer(pVB);

	MFDebug_Assert(currentVert == currentPrim.numVertices, "Incorrect number of vertices.");

	MFRenderer_AddMesh(&currentPrim, pMaterial, pEntity, NULL, MFView_GetViewState());

	phase = 0;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:13,代码来源:MFPrimitive_D3D11.cpp


示例14: MFVertex_LockIndexBuffer

MF_API void MFVertex_LockIndexBuffer(MFIndexBuffer *pIndexBuffer, uint16 **ppIndices)
{
	MFDebug_Assert(pIndexBuffer, "NULL index buffer");
	MFDebug_Assert(!pIndexBuffer->bLocked, "Index buffer already locked!");

	pIndexBuffer->pLocked = MFHeap_Alloc(sizeof(uint16)*pIndexBuffer->numIndices, MFHeap_GetHeap(MFHT_ActiveTemporary));

	if(ppIndices)
		*ppIndices = (uint16*)pIndexBuffer->pLocked;

	pIndexBuffer->bLocked = true;
}
开发者ID:FujiGameJam,项目名称:fuji,代码行数:12,代码来源:MFVertex_D3D11.cpp


示例15: MFVertex_LockIndexBuffer

MF_API void MFVertex_LockIndexBuffer(MFIndexBuffer *pIndexBuffer, uint16 **ppIndices)
{
	MFDebug_Assert(!pIndexBuffer->bLocked, "Index buffer already locked!");

	IDirect3DIndexBuffer9 *pIB = (IDirect3DIndexBuffer9*)pIndexBuffer->pPlatformData;
	HRESULT hr = pIB->Lock(0, sizeof(uint16)*pIndexBuffer->numIndices, &pIndexBuffer->pLocked, 0);
	MFDebug_Assert(SUCCEEDED(hr), "Failed to lock index buffer");

	if(ppIndices)
		*ppIndices = (uint16*)pIndexBuffer->pLocked;

	pIndexBuffer->bLocked = true;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:13,代码来源:MFVertex_D3D9.cpp


示例16: MFVertex_LockVertexBuffer

MF_API void MFVertex_LockVertexBuffer(MFVertexBuffer *pVertexBuffer, void **ppVertices)
{
	MFDebug_Assert(!pVertexBuffer->bLocked, "Vertex buffer already locked!");

	IDirect3DVertexBuffer9 *pVB = (IDirect3DVertexBuffer9*)pVertexBuffer->pPlatformData;
	HRESULT hr = pVB->Lock(0, 0, &pVertexBuffer->pLocked, pVertexBuffer->bufferType == MFVBType_Dynamic ? D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE : 0);
	MFDebug_Assert(SUCCEEDED(hr), "Failed to lock vertex buffer");

	if(ppVertices)
		*ppVertices = pVertexBuffer->pLocked;

	pVertexBuffer->bLocked = true;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:13,代码来源:MFVertex_D3D9.cpp


示例17: MFVertex_CreateVertexBufferPlatformSpecific

bool MFVertex_CreateVertexBufferPlatformSpecific(MFVertexBuffer *pVertexBuffer, void *pVertexBufferMemory)
{
	DWORD usage;
	D3DPOOL pool;
	DWORD lockFlags = 0;
	switch(pVertexBuffer->bufferType)
	{
		case MFVBType_Static:
			pool = D3DPOOL_MANAGED;
			usage = 0;
			break;
		case MFVBType_Dynamic:
			pool = D3DPOOL_DEFAULT;
			usage = D3DUSAGE_WRITEONLY;
			usage = D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY;
			lockFlags = D3DLOCK_DISCARD;
			break;
		case MFVBType_Scratch:
			// Maybe it's better to use UP draw calls for scratch buffers?
			pool = D3DPOOL_DEFAULT;
			usage = D3DUSAGE_WRITEONLY;
//			usage = D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY; // DYNAMIC is supposedly only for frequent locking... we don't intend to lock more than once 
			break;
		default:
			MFDebug_Assert(false, "Invalid vertex buffer type!");
			return false;
	}

	int stride = pVertexBuffer->pVertexDeclatation->pElementData[0].stride;

	IDirect3DVertexBuffer9 *pVertBuffer;
	HRESULT hr = pd3dDevice->CreateVertexBuffer(stride*pVertexBuffer->numVerts, usage, 0, pool, &pVertBuffer, NULL);
	MFDebug_Assert(SUCCEEDED(hr), "Failed to create vertex buffer");
	if(FAILED(hr))
		return false;

	if(pVertexBuffer->pName)
		MFRenderer_D3D9_SetDebugName(pVertBuffer, pVertexBuffer->pName);
	pVertexBuffer->pPlatformData = pVertBuffer;

	if(pVertexBufferMemory)
	{
		void *pData;
		pVertBuffer->Lock(0, 0, &pData, lockFlags);
		MFCopyMemory(pData, pVertexBufferMemory, stride*pVertexBuffer->numVerts);
		pVertBuffer->Unlock();
	}

	return true;
}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:50,代码来源:MFVertex_D3D9.cpp


示例18: MFInput_IsAvailable

MF_API bool MFInput_IsAvailable(int device, int deviceID)
{
	MFDebug_Assert(device >= 0 && device < IDD_Max, "Invalid Input Device");
	MFDebug_Assert(deviceID >= 0 && deviceID < MFInput_MaxInputID, "Invalid DeviceID");

	bool available = gDeviceStatus[device][deviceID] != IDS_Unavailable;

#if !defined(_RETAIL)
	// this allow's a device with a keyboard and no gamepad's to emulate a gamepad with the keyboard
	if(!available && device == IDD_Gamepad && deviceID == 0 && gNumKeyboards)
		available = true;
#endif

	return available;
}
开发者ID:RemedyGameJam,项目名称:fuji,代码行数:15,代码来源:MFInput.cpp


示例19: MFTexture_CreatePlatformSpecific

// interface functions
void MFTexture_CreatePlatformSpecific(MFTexture *pTexture, bool generateMipChain)
{
	MFTextureTemplateData *pTemplate = pTexture->pTemplateData;

	// create texture
	D3DFORMAT platformFormat = (D3DFORMAT)MFTexture_GetPlatformFormatID(pTemplate->imageFormat, MFDD_XBOX);

#if defined(XB_XGTEXTURES)
	pTexture->pTexture = &pTexture->texture;
	XGSetTextureHeader(pTemplate->pSurfaces[0].width, pTemplate->pSurfaces[0].height, 1, 0, platformFormat, 0, pTexture->pTexture, 0, 0);
	pTexture->pTexture->Register(pTemplate->pSurfaces[0].pImageData);

	if(pTemplate->imageFormat >= TexFmt_XB_A8R8G8B8s && pTemplate->imageFormat <= TexFmt_XB_R4G4B4A4s)
	{
		XGSwizzleRect(pTemplate->pSurfaces[0].pImageData, 0, NULL, pTemplate->pSurfaces[0].pImageData, pTemplate->pSurfaces[0].width, pTemplate->pSurfaces[0].height, NULL, pTemplate->pSurfaces[0].bitsPerPixel/8);
	}
#else

	HRESULT hr;
	hr = D3DXCreateTexture(pd3dDevice, pTemplate->pSurfaces[0].width, pTemplate->pSurfaces[0].height, generateMipChain ? 0 : 1, 0, platformFormat, 0, &pTexture->pTexture);

	MFDebug_Assert(hr != D3DERR_NOTAVAILABLE, MFStr("LoadTexture failed: D3DERR_NOTAVAILABLE, 0x%08X", hr));
	MFDebug_Assert(hr != D3DERR_OUTOFVIDEOMEMORY, MFStr("LoadTexture failed: D3DERR_OUTOFVIDEOMEMORY, 0x%08X", hr));
	MFDebug_Assert(hr != D3DERR_INVALIDCALL, MFStr("LoadTexture failed: D3DERR_INVALIDCALL, 0x%08X", hr));
	MFDebug_Assert(hr != D3DXERR_INVALIDDATA, MFStr("LoadTexture failed: D3DXERR_INVALIDDATA, 0x%08X", hr));

	MFDebug_Assert(hr == D3D_OK, MFStr("Failed to create texture '%s'.", pTexture->name));

	// copy image data
	D3DLOCKED_RECT rect;
	pTexture->pTexture->LockRect(0, &rect, NULL, 0);

	if(pTemplate->imageFormat >= TexFmt_XB_A8R8G8B8s && pTemplate->imageFormat <= TexFmt_XB_R4G4B4A4s)
	{
		XGSwizzleRect(pTemplate->pSurfaces[0].pImageData, 0, NULL, rect.pBits, pTemplate->pSurfaces[0].width, pTemplate->pSurfaces[0].height, NULL, pTemplate->pSurfaces[0].bitsPerPixel/8);
	}
	else
	{
		MFCopyMemory(rect.pBits, pTemplate->pSurfaces[0].pImageData, pTemplate->pSurfaces[0].bufferLength);
	}

	pTexture->pTexture->UnlockRect(0);

	// filter mip levels
	if(generateMipChain)
		D3DXFilterTexture(pTexture->pTexture, NULL, 0, D3DX_DEFAULT);
#endif
}
开发者ID:jacob-carlborg,项目名称:fuji,代码行数:49,代码来源:MFTexture_XB.cpp


示例20: MFSound_CreateInternal

void MFSound_CreateInternal(MFSound *pSound)
{
	MFSoundTemplate *pTemplate = pSound->pTemplate;
	MFSoundDataInternal *pInternal = pSound->pInternal;

	alGenBuffers(1, &pInternal->buffer);

	// if dynamic, allocate buffer
	if(pTemplate->flags & MFSF_Dynamic)
	{
		long bufferSize = ((pTemplate->numChannels * pTemplate->bitsPerSample) >> 3) * pTemplate->numSamples;

		if(gpCurrentContext->ext.static_buffer)
		{
			pTemplate->ppStreams = (char**)MFHeap_Alloc(sizeof(char*) + bufferSize);
			pTemplate->ppStreams[0] = (char*)&pTemplate->ppStreams[1];

			alBufferDataStatic(pInternal->buffer, pInternal->format, pTemplate->ppStreams[0], bufferSize, pTemplate->sampleRate);
		}
		else if(gpCurrentContext->ext.buffer_sub_data)
		{
			switch((pTemplate->numChannels << 16) | pTemplate->bitsPerSample)
			{
				case 0x10000 | 8:	pInternal->format = AL_FORMAT_MONO8;	break;
				case 0x20000 | 8:	pInternal->format = AL_FORMAT_STEREO8;	break;
				case 0x10000 | 16:	pInternal->format = AL_FORMAT_MONO16;	break;
				case 0x20000 | 16:	pInternal->format = AL_FORMAT_STEREO16;	break;
				case 0x10000 | 32:
					if(gpCurrentContext->ext.float32)
						pInternal->format = AL_FORMAT_MONO_FLOAT32;
					else
						MFDebug_Assert(false, "Unsupported sample format!");
					break;
				case 0x20000 | 32:
					if(gpCurrentContext->ext.float32)
						pInternal->format = AL_FORMAT_STEREO_FLOAT32;
					else
						MFDebug_Assert(false, "Unsupported sample format!");
					break;
				default:
					MFDebug_Assert(false, "Unsupported sample format!");
					break;
			}

			// set buffer data with null allocates a buffer filled with undefined junk
			alBufferData(pInternal->buffer, pInternal->format, NULL, bufferSize, pTemplate->sampleRate);
		}
	}
开发者ID:TurkeyMan,项目名称:fuji,代码行数:48,代码来源:MFSound_OpenAL.cpp



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ MFREE函数代码示例发布时间:2022-05-30
下一篇:
C++ MEfill函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap