void ApexVertexBuffer::build(const VertexFormat& format, uint32_t vertexCount) { const ApexVertexFormat* apexVertexFormat = DYNAMIC_CAST(const ApexVertexFormat*)(&format); if (apexVertexFormat) { mFormat.copy(*apexVertexFormat); } NvParameterized::Handle handle(*mParams); VERIFY_PARAM(mParams->getParameterHandle("buffers", handle)); VERIFY_PARAM(mParams->resizeArray(handle, mFormat.mParams->bufferFormats.arraySizes[0])); resize(vertexCount); }
LTRESULT CLTRealConsoleMgr::GetErrorDescription(HRESULT hrError, char* szBuffer, uint32* pSizeOfBuffer) { // Sanity checks... VERIFY_PARAM(szBuffer); VERIFY_PARAM(pSizeOfBuffer); // Get the console error description... HRESULT hr = RNGetErrorDescriptionA(m_pConsole, hrError, szBuffer, (unsigned long*)pSizeOfBuffer); if (hr == RNGC_BUFFERTOOSMALL) HANDLE_FAILURE_RESULT(hr, LT_BUFFERTOOSMALL); // If we didn't get an error description from the console, do our own... if (hr != S_OK) { switch (hr) { COPY_ERROR_DESC(RNGC_NOCONSOLE, "RNGC_NOCONSOLE"); COPY_ERROR_DESC(RNGC_INVALID_IID, "RNGC_INVALID_IID"); COPY_ERROR_DESC(RNGC_INVALID_LAUNCH, "RNGC_INVALID_LAUNCH"); COPY_ERROR_DESC(RNGC_TOURNEY_OVER, "RNGC_TOURNEY_OVER"); COPY_ERROR_DESC(RNGC_SERVER_UNREACHABLE, "RNGC_SERVER_UNREACHABLE"); COPY_ERROR_DESC(RNGC_RESULTS_INVALID, "RNGC_RESULTS_INVALID"); COPY_ERROR_DESC(RNGC_RESULTS_TOO_LATE, "RNGC_RESULTS_TOO_LATE"); COPY_ERROR_DESC(RNGC_IGNORE, "RNGC_IGNORE"); COPY_ERROR_DESC(RNGC_BUFFERTOOSMALL, "RNGC_BUFFERTOOSMALL"); COPY_ERROR_DESC(RNGC_NOTFOUND, "RNGC_NOTFOUND"); COPY_ERROR_DESC(RNGC_QUEUE_EMPTY, "RNGC_QUEUE_EMPTY"); COPY_ERROR_DESC(RNGC_TIMED_OUT, "RNGC_TIMED_OUT"); COPY_ERROR_DESC(RNGC_NOTINITIALIZED, "RNGC_NOTINITIALIZED"); COPY_ERROR_DESC(S_OK, "S_OK"); } } HANDLE_FAILURE_RESULT(hr, LT_ERROR); // All done... return(LT_OK); }
LTRESULT CLTRealConsoleMgr::GetMessageDescription(RNGC_MESSAGE_TYPE nType, IRNGCMessage* pMessage, char* szBuffer, uint32* pSizeOfBuffer) { // Sanity checks... VERIFY_PARAM(szBuffer); VERIFY_PARAM(pSizeOfBuffer); // Get the console message description... HRESULT hr = RNGetMessageDescriptionA(m_pConsole, nType, pMessage, szBuffer, (unsigned long*)pSizeOfBuffer); if (hr == RNGC_BUFFERTOOSMALL) HANDLE_FAILURE_RESULT(hr, LT_BUFFERTOOSMALL); HANDLE_FAILURE_RESULT(hr, LT_ERROR); // All done... return(LT_OK); }
LTRESULT CLTRealConsoleMgr::ReleaseMessage(IRNGCMessage* pMessage) { // Sanity checks... VERIFY_PARAM(pMessage); // Release the message object... pMessage->Release(); // All done... return(LT_OK); }
LTRESULT CLTRealConsoleMgr::IsInitialized(bool* pInited) { // Sanity checks... VERIFY_PARAM(pInited); // Set whether or not we are initialized... *pInited = m_bInited; // All done... return(LT_OK); }
LTRESULT CLTRealConsoleMgr::GetLastErrorResult(HRESULT* pErrorResult) { // Sanity checks... VERIFY_INIT; VERIFY_PARAM(pErrorResult); // Get the last error... *pErrorResult = m_hrLastError; // All done... return(LT_OK); }
LTRESULT CLTRealConsoleMgr::CreateMessage(IRNGCMessage** ppMessage) { // Sanity checks... VERIFY_INIT; VERIFY_PARAM(ppMessage); // Create a new message object... HRESULT hr = RNCreateMessage(ppMessage); HANDLE_FAILURE_RESULT(hr, LT_ERROR); // All done... return(LT_OK); }
void ApexVertexBuffer::resize(uint32_t vertexCount) { mParams->vertexCount = vertexCount; NvParameterized::Handle handle(*mParams); VERIFY_PARAM(mParams->getParameterHandle("buffers", handle)); int32_t buffersSize = 0; VERIFY_PARAM(mParams->getArraySize(handle, buffersSize)); for (int32_t i = 0; i < buffersSize; i++) { RenderDataFormat::Enum outFormat = mFormat.getBufferFormat((uint32_t)i); NvParameterized::Handle elementHandle(*mParams); VERIFY_PARAM(handle.getChildHandle(i, elementHandle)); NvParameterized::Interface* currentReference = NULL; VERIFY_PARAM(mParams->getParamRef(elementHandle, currentReference)); // BUFFER_FORMAT_ADD This is just a bookmark for places where to add buffer formats if (currentReference == NULL && vertexCount > 0) { const char* className = NULL; switch (outFormat) { case RenderDataFormat::UBYTE1: case RenderDataFormat::BYTE_UNORM1: case RenderDataFormat::BYTE_SNORM1: className = BufferU8x1::staticClassName(); break; case RenderDataFormat::UBYTE2: case RenderDataFormat::BYTE_UNORM2: case RenderDataFormat::BYTE_SNORM2: className = BufferU8x2::staticClassName(); break; case RenderDataFormat::UBYTE3: case RenderDataFormat::BYTE_UNORM3: case RenderDataFormat::BYTE_SNORM3: className = BufferU8x3::staticClassName(); break; case RenderDataFormat::UBYTE4: case RenderDataFormat::BYTE_UNORM4: case RenderDataFormat::BYTE_SNORM4: case RenderDataFormat::R8G8B8A8: case RenderDataFormat::B8G8R8A8: className = BufferU8x4::staticClassName(); break; case RenderDataFormat::SHORT1: case RenderDataFormat::USHORT1: case RenderDataFormat::SHORT_UNORM1: case RenderDataFormat::SHORT_SNORM1: case RenderDataFormat::HALF1: className = BufferU16x1::staticClassName(); break; case RenderDataFormat::SHORT2: case RenderDataFormat::USHORT2: case RenderDataFormat::SHORT_UNORM2: case RenderDataFormat::SHORT_SNORM2: case RenderDataFormat::HALF2: className = BufferU16x2::staticClassName(); break; case RenderDataFormat::SHORT3: case RenderDataFormat::USHORT3: case RenderDataFormat::SHORT_UNORM3: case RenderDataFormat::SHORT_SNORM3: case RenderDataFormat::HALF3: className = BufferU16x3::staticClassName(); break; case RenderDataFormat::SHORT4: case RenderDataFormat::USHORT4: case RenderDataFormat::SHORT_UNORM4: case RenderDataFormat::SHORT_SNORM4: case RenderDataFormat::HALF4: className = BufferU16x4::staticClassName(); break; case RenderDataFormat::UINT1: className = BufferU32x1::staticClassName(); break; case RenderDataFormat::UINT2: className = BufferU32x2::staticClassName(); break; case RenderDataFormat::UINT3: className = BufferU32x3::staticClassName(); break; case RenderDataFormat::UINT4: className = BufferU32x4::staticClassName(); break; case RenderDataFormat::FLOAT1: className = BufferF32x1::staticClassName(); break; case RenderDataFormat::FLOAT2: className = BufferF32x2::staticClassName(); break; case RenderDataFormat::FLOAT3: className = BufferF32x3::staticClassName(); break; case RenderDataFormat::FLOAT4: case RenderDataFormat::R32G32B32A32_FLOAT: case RenderDataFormat::B32G32R32A32_FLOAT: className = BufferF32x4::staticClassName(); break; default: PX_ALWAYS_ASSERT(); break; } if (className != NULL) { currentReference = GetInternalApexSDK()->getParameterizedTraits()->createNvParameterized(className); } if (currentReference != NULL) { NvParameterized::Handle arrayHandle(*currentReference); VERIFY_PARAM(currentReference->getParameterHandle("data", arrayHandle)); PX_ASSERT(arrayHandle.isValid()); VERIFY_PARAM(arrayHandle.resizeArray((int32_t)vertexCount)); mParams->setParamRef(elementHandle, currentReference); } } else if (vertexCount > 0) { NvParameterized::Interface* oldReference = currentReference; PX_ASSERT(oldReference != NULL); currentReference = GetInternalApexSDK()->getParameterizedTraits()->createNvParameterized(oldReference->className()); if (currentReference != NULL) { VERIFY_PARAM(currentReference->copy(*oldReference)); NvParameterized::Handle arrayHandle(*currentReference); VERIFY_PARAM(currentReference->getParameterHandle("data", arrayHandle)); VERIFY_PARAM(arrayHandle.resizeArray((int32_t)vertexCount)); } VERIFY_PARAM(mParams->setParamRef(elementHandle, currentReference)); oldReference->destroy(); } else if (vertexCount == 0) { VERIFY_PARAM(mParams->setParamRef(elementHandle, NULL)); if (currentReference != NULL) { currentReference->destroy(); } } } }