• Content count

  • Joined

  • Last visited

Community Reputation

129 Neutral

About safiullahhussaini

  • Rank
  1. DX11 Which DirectX to Pick

    I always found the DirectX 11 to be simpler to set up. But if the intent is to get something simple up and running, you have to write shader code. Which although is not a bad thing, just that you have to do some household work in the project.<br /><br />DirectX 9, although you are going to call more APIs, you will only be writing in C, not HLSL (if you are doing something simple, and not writing shaders).<br /><br />HLSL is pretty simple to learn but if you are against learning a slightly different programming paradigm, use DX9. So I think it boils down to whether you can or you want to write shaders.
  2. Again may be a rookie question, and I think I ve read about this somewhere in a book on Direct3D 11, but I just wanted to confirm. Is it possible to stream out pointlist instead of triangle lists from the Tesselation stages (Hull and Domain Shaders) from a four control point list? And I dnt know if this is a valid question either or whether I should be asking it here, but how does OpenGL fare in this regard? I have heard from a friend that something like this is possible in OpenGL, so if it is, does the hardware support it? Is this a Direct3D limitation (for performance reasons or something)? Thanks in advance.
  3. Disappearing Data in Structured Buffers

    Problem fixed, it was a rokkie mistake I suppose, I was not properly setting the Resources to the Shader... or something like that. Thanks a bunch MJP... BTW your book is AWESOME!!!
  4. Disappearing Data in Structured Buffers

    This is the PIX report on my vertex shader, seems like the Buffer is binding correctly (At least the strides match). [source lang="java"]// // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // // Buffer Definitions: // // Resource bind info for VertexBuffer // { // // struct // { // // float4 position; // Offset: 0 // float4 color; // Offset: 16 // // } $Element; // Offset: 0 Size: 32 // // } // // Resource bind info for InstanceBuffer // { // // struct // { // // float4x4 matLocation; // Offset: 0 // int strTemplateType; // Offset: 64 // // } $Element; // Offset: 0 Size: 68 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // VertexBuffer texture struct r/o 0 1 // InstanceBuffer texture struct r/o 1 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------ ------ // SV_VERTEXID 0 x 0 VERTID uint x // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------ ------ // SV_POSITION 0 xyzw 0 POS float xyzw // COLOR 0 xyzw 1 NONE float xyzw // vs_4_0 dcl_globalFlags refactoringAllowed | enableRawAndStructuredBuffers dcl_resource_structured t0, 32 dcl_resource_structured t1, 68 dcl_input_sgv v0.x, vertex_id dcl_output_siv o0.xyzw, position dcl_output o1.xyzw #line 82 "C:\Users\Safiullah\Documents\Visual Studio 2010\Projects\RayTracingAttempt\Debug\RTShaders.fx" ld_structured o0.xyzw, v0.x, l(0), t0.xyzw // VS<0,1,2,3> ld_structured o1.x, l(0), l(0), t1.xxxx // VS<4> ld_structured o1.y, l(0), l(20), t1.xxxx // VS<5> ld_structured o1.z, l(0), l(40), t1.xxxx // VS<6> ld_structured o1.w, l(0), l(60), t1.xxxx // VS<7> #line 105 ret // Approximately 6 instruction slots used [/source]
  5. Disappearing Data in Structured Buffers

    Just Mad the changes but no luck... Right now, my ElementCount is 1, is that a problem?
  6. Hi I am new here so I dont know if this is a common n00b problem. So I am creating my structured buffer like this [source lang="cpp"]HRESULT CRenderer::CreateStructuredBuffer ( unsigned int arg_dElementCount, unsigned int arg_dElementSize, void * arg_pData ) { HRESULT status = S_OK; D3D11_BUFFER_DESC objBufferDesc; D3D11_SUBRESOURCE_DATA objInitData; D3D11_SHADER_RESOURCE_VIEW_DESC objResViewDesc; ZeroMemory(&objBufferDesc, sizeof(objBufferDesc)); ZeroMemory(&objInitData, sizeof(objInitData)); ZeroMemory(&objResViewDesc, sizeof(objResViewDesc)); objBufferDesc.ByteWidth = arg_dElementCount * arg_dElementSize; objBufferDesc.StructureByteStride = arg_dElementSize; objBufferDesc.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_STRUCTURED; objBufferDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; objBufferDesc.Usage = D3D11_USAGE_DEFAULT; objBufferDesc.CPUAccessFlags = 0; objInitData.pSysMem = arg_pData; this->m_dxStructuredBufferArray.push_back ( NULL ); status = this->m_dxDevice->CreateBuffer ( &objBufferDesc, &objInitData, &(this->m_dxStructuredBufferArray[this->m_dNumOfStructuredBuffers++]) ); if (FAILED(status)) { return status; } objResViewDesc.Format = DXGI_FORMAT_UNKNOWN; objResViewDesc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER; objResViewDesc.Buffer.ElementOffset = 0; objResViewDesc.Buffer.ElementWidth = arg_dElementSize; objResViewDesc.Buffer.FirstElement = 0; objResViewDesc.Buffer.NumElements = arg_dElementCount; this->m_dxResourceViews.push_back ( NULL ); status = this->m_dxDevice->CreateShaderResourceView ( this->m_dxStructuredBufferArray[this->m_dNumOfStructuredBuffers-1], &objResViewDesc, &(this->m_dxResourceViews[this->m_dNumOfStructuredBuffers-1]) ); if (FAILED(status)) { return status; } return status; }[/source] And I am calling it like this [source lang="cpp"] status = objRenderer.CreateStructuredBuffer ( objWorldReader.GetInstanceCount ( ), sizeof(SInstance), objWorldReader.GetInstances ( ) ); if ( FAILED(status) ) return 1; [/source] But it seems when I view the buffer in PIX in a simple passthrough Shader, I just see zeros. Now I know the structure may need to be 16 byte aligned since I encountered a similar problem before, so I have declared my structure like this. [source lang="cpp"]struct SInstance { __declspec(align(16)) XMMATRIX matLocation; int dTemplateType; }; [/source] But now I really dont know what's going on and I am really out of my depth. Please Help!!!!
  7. Hi, This might be a weird and stupid question but it has me stumped for a while. I have made this new input device which I can use in many of applications (The ones I have written) cuz it uses a simple serial port. I would like to get this device to be used as my main input devices in the games that I play. How do I get about this? Do I need to learn to write device drivers? If so, where do I start, I downloaded the WDK (Windows Driver development Kit) and been reading up on it but it sounds like French to me. They talk about a lot of models and stuff which I do understand but it does nt tell me where to start writing code for it and plugging in my already written code. Please Help, Safi