Example #1
0
	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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #8
0
		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);
	    
	}
}
Example #11
0
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;
}
Example #12
0
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;
}