MeshPtr CreateCube() { static const std::vector<GLfloat> cubeVerts = { 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, -0.5f, -0.5f, 0.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, -0.5f, 0.5f, 0.5f, 0.0f, 0.0f, -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, -0.5f, -0.5f, -0.5f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 1.0f }; static const std::vector<unsigned int> cubeIdxs = { 0, 2, 1, 0, 3, 2, // Right 4, 5, 6, 4, 6, 7, // Left 0, 7, 3, 0, 4, 7, // Top 1, 6, 2, 1, 5, 6, // Bottom 0, 5, 1, 0, 4, 5, // Front 3, 7, 6, 3, 6, 2 // Back }; auto vertexBuffer = std::make_shared<Buffer>(BufferTarget::ArrayBuffer); vertexBuffer->UploadData(cubeVerts.data(), GetVectorSize(cubeVerts)); auto indexBuffer = std::make_shared<Buffer>(BufferTarget::ElementArrayBuffer); indexBuffer->UploadData(cubeIdxs.data(), GetVectorSize(cubeIdxs)); return std::make_shared<Mesh>(vertexBuffer, VertexPosUv::ATTRIBUTES, indexBuffer, sizeof(GLuint), 36); }
/* ================ AudioStream::StartStream ================ */ bool AudioStream::StartStream( AudioSource *src, bool loop ) { src->streamData = CreateStreamData( loop ); // streaming not needed, as size too small if ( outSize <= AUDIOSRC_STREAM_LIMIT ) { if( !UploadData( src->streamData, src->alBuffers[0], AUDIOSRC_STREAM_LIMIT ) ) { delete src->streamData; src->streamData = OG_NULL; return false; } src->streamData->isDone = true; alSourcei( src->alSourceNum, AL_BUFFER, src->alBuffers[0] ); alSourcei( src->alSourceNum, AL_LOOPING, loop ); } else { // Upload Data for( int i=0; i<AUDIOSRC_BUFFERS; i++ ) { if( !UploadData( src->streamData, src->alBuffers[i], AUDIOSRC_BUFFERSIZE ) ) { delete src->streamData; src->streamData = OG_NULL; return false; } } alSourcei( src->alSourceNum, AL_LOOPING, false ); // solved differently when streaming alSourceQueueBuffers( src->alSourceNum, AUDIOSRC_BUFFERS, src->alBuffers ); } alSourcePlay( src->alSourceNum ); return true; }
TextureClient* IMFYCbCrImage::GetD3D9TextureClient(CompositableClient* aClient) { IDirect3DDevice9* device = gfxWindowsPlatform::GetPlatform()->GetD3D9Device(); RefPtr<IDirect3DTexture9> textureY; HANDLE shareHandleY = 0; if (!UploadData(device, textureY, shareHandleY, mData.mYChannel, mData.mYSize, mData.mYStride)) { return nullptr; } RefPtr<IDirect3DTexture9> textureCb; HANDLE shareHandleCb = 0; if (!UploadData(device, textureCb, shareHandleCb, mData.mCbChannel, mData.mCbCrSize, mData.mCbCrStride)) { return nullptr; } RefPtr<IDirect3DTexture9> textureCr; HANDLE shareHandleCr = 0; if (!UploadData(device, textureCr, shareHandleCr, mData.mCrChannel, mData.mCbCrSize, mData.mCbCrStride)) { return nullptr; } RefPtr<IDirect3DQuery9> query; HRESULT hr = device->CreateQuery(D3DQUERYTYPE_EVENT, byRef(query)); hr = query->Issue(D3DISSUE_END); int iterations = 0; bool valid = false; while (iterations < 10) { HRESULT hr = query->GetData(nullptr, 0, D3DGETDATA_FLUSH); if (hr == S_FALSE) { Sleep(1); iterations++; continue; } if (hr == S_OK) { valid = true; } break; } if (!valid) { return nullptr; } RefPtr<DXGIYCbCrTextureClient> texClient = new DXGIYCbCrTextureClient(aClient->GetForwarder(), TextureFlags::DEFAULT); texClient->InitWith(textureY, textureCb, textureCr, shareHandleY, shareHandleCb, shareHandleCr, GetSize(), mData.mYSize, mData.mCbCrSize); mTextureClient = texClient; return mTextureClient; }
void Model::UploadIndices(_In_ Microsoft::WRL::ComPtr<ID3D12GraphicsCommandList> & CommandList, _Out_ Microsoft::WRL::ComPtr<ID3D12Resource> & UploadResource) { using IndexSize = uint16_t; std::array<IndexSize, 36> Indices = { 0, 2, 1, // -x 1, 2, 3, 4, 5, 6, // +x 5, 7, 6, 0, 1, 5, // -y 0, 5, 4, 2, 6, 7, // +y 2, 7, 3, 0, 4, 6, // -z 0, 6, 2, 1, 3, 7, // +z 1, 7, 5, }; constexpr size_t SizeOfIndices = Indices.size() * sizeof(IndexSize); IndexCount = static_cast<UINT>(Indices.size()); UploadData(CommandList, IndexBuffer, UploadResource, Indices.data(), SizeOfIndices); IndexBufferView.BufferLocation = IndexBuffer->GetGPUVirtualAddress(); IndexBufferView.SizeInBytes = SizeOfIndices; IndexBufferView.Format = DXGI_FORMAT_R16_UINT; }
bool mUploadData ( void* pBuff, /*Буфер для выгрузки данных*/ unsigned long ulAddr, /*Начальный адрес для выгрузки*/ unsigned long ulSize, /*Размер выгружаемых данных*/ unsigned uMax /*Максимальный размер выгружаемых данных за одну передачу: 1..5 байт*/ ) { while (IsMonitorBusy) {} IsMonitorBusy = true; bool res = UploadData( pBuff, ulAddr, ulSize, uMax); IsMonitorBusy = false; return res; }
//------------------------------------------------------------------------ bool CPlaylistActivityTracker::RequestCurrentActivity( PlayListActivityCallback callback ) { bool success = false; // Don't start another request if we're already waiting on one if( ! AnyActiveRequestsOfType( eRTT_RequestActivity ) ) { CryFixedStringT<MAX_CONTENT> httpParams; httpParams.Format( "?platform=1"); success = UploadData( "playlist/all_playlist_activity/", httpParams.c_str(), 4096, eRTT_RequestActivity ); m_currentActivityCallback = callback; } return success; }
//------------------------------------------------------------------------ bool CPlaylistActivityTracker::CreatedGame( ILevelRotation::TExtInfoId playlistId, uint32 variantId ) { bool success = false; //ensure service is initialised if(! AnyActiveRequestsOfType( eRTT_AnnounceCreateGame ) ) { //construct the http request CryFixedStringT<MAX_CONTENT> httpParams; httpParams.Format( "?platform=1&playlist=%d&variant=%d", playlistId, variantId ); success = UploadData( "playlist/game_created/", httpParams.c_str(), 1024, eRTT_AnnounceCreateGame ); } return success; }
void CommittedResource::Create( PtrDevice device, int64_t size, _In_opt_ const void* data, uint32_t nodeMask) { D3D12_HEAP_PROPERTIES heapProps; heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; heapProps.CreationNodeMask = nodeMask; heapProps.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; heapProps.Type = D3D12_HEAP_TYPE_UPLOAD; heapProps.VisibleNodeMask = nodeMask; D3D12_RESOURCE_DESC bufferDesc; bufferDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; bufferDesc.Alignment = 0; bufferDesc.Width = static_cast<UINT64>(size); bufferDesc.Height = 1; bufferDesc.DepthOrArraySize = 1; bufferDesc.MipLevels = 1; bufferDesc.Format = DXGI_FORMAT_UNKNOWN; bufferDesc.SampleDesc.Count = 1; bufferDesc.SampleDesc.Quality = 0; bufferDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR; bufferDesc.Flags = D3D12_RESOURCE_FLAG_NONE; m_Size = size; ThrowIfFailed( device->CreateCommittedResource( &heapProps, D3D12_HEAP_FLAG_NONE, &bufferDesc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(m_Resource.GetInitReference())) ); if (data) { UploadData(data, size); } }
/* ================ AudioStream::UpdateStream ================ */ void AudioStream::UpdateStream( AudioSource *src ) { OG_ASSERT( src->streamData != OG_NULL ); if ( outSize > AUDIOSRC_STREAM_LIMIT ) { int processed; alGetSourcei( src->alSourceNum, AL_BUFFERS_PROCESSED, &processed ); ALuint buffer; while( processed-- ) { alSourceUnqueueBuffers( src->alSourceNum, 1, &buffer ); CheckAlErrors(); if ( !UploadData( src->streamData, buffer, AUDIOSRC_BUFFERSIZE ) ) return; alSourceQueueBuffers( src->alSourceNum, 1, &buffer ); CheckAlErrors(); } } return; }
/* ********************************************************* * PROCESS THE DATA AND SHARE THEM WITH OTHER SOFTWARE. ********************************************************* */ void CDataProcess::DataProcess(){ if(COMM_SHAREDMEM == g_CommunicationSel){ //USING SHARED MEMERY. BOOL bTimeout = gEventRecv.Lock(INFINITE); UploadData(); gEventRecv.Unlock(); gEventSend.SetEvent();//SEND DATA. } else if(COMM_NETWORK == g_CommunicationSel){ //USING TCP //UploadData(); //gEventSend.SetEvent(); //TELL THE SERVER TO SEND THE DATA SetEvent(h_eSingleSpectraSending); } else if(COMM_NONE == g_CommunicationSel){ //SetEvent(h_eSingleSpectraSending); global.series_fifo.append(rq); } }
void Model::UploadVertices(_In_ Microsoft::WRL::ComPtr<ID3D12GraphicsCommandList> & CommandList, _Out_ Microsoft::WRL::ComPtr<ID3D12Resource> & UploadResource) { std::array<Vertex, 8> Cube = { { { { -0.5f, -0.5f, -0.5f }, { 0.0f, 0.0f, 0.0f, 1.0f } }, { { -0.5f, -0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f, 1.0f } }, { { -0.5f, 0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, { { -0.5f, 0.5f, 0.5f }, { 0.0f, 1.0f, 1.0f, 1.0f } }, { { 0.5f, -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f, 1.0f } }, { { 0.5f, -0.5f, 0.5f }, { 1.0f, 0.0f, 1.0f, 1.0f } }, { { 0.5f, 0.5f, -0.5f }, { 1.0f, 1.0f, 0.0f, 1.0f } }, { { 0.5f, 0.5f, 0.5f }, { 1.0f, 1.0f, 1.0f, 1.0f } }, } }; constexpr size_t SizeOfCube = Cube.size() * sizeof(Vertex); UploadData(CommandList, VertexBuffer, UploadResource, Cube.data(), SizeOfCube); VertexBufferView.BufferLocation = VertexBuffer->GetGPUVirtualAddress(); VertexBufferView.StrideInBytes = sizeof(Vertex); VertexBufferView.SizeInBytes = SizeOfCube; }
TextureClient* IMFYCbCrImage::GetD3D9TextureClient(KnowsCompositor* aForwarder) { RefPtr<IDirect3DDevice9> device = DeviceManagerD3D9::GetDevice(); if (!device) { return nullptr; } RefPtr<IDirect3DTexture9> textureY; HANDLE shareHandleY = 0; if (!UploadData(device, textureY, shareHandleY, mData.mYChannel, mData.mYSize, mData.mYStride)) { return nullptr; } RefPtr<IDirect3DTexture9> textureCb; HANDLE shareHandleCb = 0; if (!UploadData(device, textureCb, shareHandleCb, mData.mCbChannel, mData.mCbCrSize, mData.mCbCrStride)) { return nullptr; } RefPtr<IDirect3DTexture9> textureCr; HANDLE shareHandleCr = 0; if (!UploadData(device, textureCr, shareHandleCr, mData.mCrChannel, mData.mCbCrSize, mData.mCbCrStride)) { return nullptr; } RefPtr<IDirect3DQuery9> query; HRESULT hr = device->CreateQuery(D3DQUERYTYPE_EVENT, getter_AddRefs(query)); hr = query->Issue(D3DISSUE_END); int iterations = 0; bool valid = false; while (iterations < 10) { HRESULT hr = query->GetData(nullptr, 0, D3DGETDATA_FLUSH); if (hr == S_FALSE) { Sleep(1); iterations++; continue; } if (hr == S_OK) { valid = true; } break; } if (!valid) { return nullptr; } mTextureClient = TextureClient::CreateWithData( DXGIYCbCrTextureData::Create(TextureFlags::DEFAULT, textureY, textureCb, textureCr, shareHandleY, shareHandleCb, shareHandleCr, GetSize(), mData.mYSize, mData.mCbCrSize), TextureFlags::DEFAULT, aForwarder->GetTextureForwarder() ); return mTextureClient; }