• Advertisement

Archived

This topic is now archived and is closed to further replies.

Strange problem in Direct3D Retained Mode

This topic is 6451 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I get crazy! In D3DRM I´m trying get textures on some objects, but here is a VERY strange thing! I must do one extra AddGroup() call after I have created all the objects, else the texture will not show up! And this is only neccesary in Direct3D HAL, not in RGB Emulation! It´s driving me crazy!
                                

void Direct3D::CreateRMCubes()
{
   D3DRMGROUPINDEX group;
   
   unsigned vertorder[] = { 0,1,3,2,  4,5,7,6,  8,9,11,10,  
		12,13,15,14,  16,17,19,18,  20,21,23,22 };

   // Copy vertex to vertexlist

   D3DRMVERTEX vertexlist[24];
   memset(vertexlist, sizeof(D3DRMVERTEX)*24, 0);
   
   for(int i=0; i<24; i++)
   memcpy(&vertexlist<i>, g_App.m_Vertices.fVertex+(i*8), sizeof(float)*8);
	
   // Load texture

   LPDIRECT3DRMTEXTURE3 texture = NULL;
   if(g_App.m_Option.bTexture) 
   if(m_pD3DRM->LoadTexture(g_App.m_chBmpName, &texture) != D3DRM_OK)
      SHOW("Failed to load texture");

   // create cube mesh

   LPDIRECT3DRMMESH lpCubeMesh;
   m_pD3DRM->CreateMesh(&lpCubeMesh);

   if(lpCubeMesh->AddGroup( 24, 6, 4, vertorder, &group ) != D3DRM_OK)
      SHOW("Failed to add group");

   if(lpCubeMesh->SetVertices( group, 0, 24, vertexlist) != D3DRM_OK)
      SHOW("Failed to SetVertices");

   if(lpCubeMesh->SetGroupTexture(group, (LPDIRECT3DRMTEXTURE) texture) != D3DRM_OK)
      SHOW("Failed to set group texture");

   // create cube frames

   m_pCube = new LPDIRECT3DRMFRAME3[g_App.m_usCubes];
   for(i=0; i<g_App.m_usCubes; i++)
      m_pD3DRM->CreateFrame(m_pScene, &m_pCube<i>);

   for(int h=0; h<g_App.m_usCubes; h++)
   {
      // Improves render speed

      lpCubeMesh->SetGroupQuality(D3DRMGROUP_ALLGROUPS, D3DRMRENDER_GOURAUD);

      // Improves texture mapping

      if(g_App.m_Option.bTexture) 
      if(lpCubeMesh->SetGroupMapping(D3DRMGROUP_ALLGROUPS, 
	     D3DRMMAP_PERSPCORRECT ) != D3DRM_OK) 
         SHOW("Failed to set group mapping");
	
      // Add mesh to cube

      m_pCube[h]->AddVisual( (LPDIRECT3DRMVISUAL)  lpCubeMesh );	
   }


   /* HERE IS THE FOX! Is this really neccesary? 
    If I un-comment this everything is fine and the textures shows up! */ 




   //if(strcmp(g_App.m_DeviceMode.m_d3dDevices[g_App.
   //	m_DeviceMode.m_iCurrentDevice].strDesc, "Direct3D HAL") == 0)
   //lpCubeMesh->AddGroup( 24, 6, 4, vertorder, &group );


   // release objects.

   if(lpCubeMesh) {lpCubeMesh->Release(); lpCubeMesh=0;}
   if(texture) {texture->Release(); texture = NULL;}
}

                                
Thanks for reading. Edited by - Gandalf on 6/21/00 7:32:51 AM Edited by - Gandalf on 6/21/00 7:33:43 AM Edited by - Gandalf on 6/21/00 7:34:25 AM Edited by - Gandalf on 6/21/00 7:34:59 AM Edited by - Gandalf on 6/21/00 7:35:26 AM Edited by - Gandalf on 6/21/00 7:36:01 AM Edited by - Gandalf on 6/21/00 7:36:49 AM

Share this post


Link to post
Share on other sites
Advertisement
What the is wrong with this setup process?

1. Building up the vertex structure.
2. Loading a texture.
3. Creating a group with 24 vertex, 6 sides and 4 vertex per side.
4. Set vertex position.
5. Set texture to the group.
6. Creating 90 frames.
7. Add mesh to every frame.

(se details above)

Edited by - Gandalf on June 21, 2000 9:51:53 AM

Share this post


Link to post
Share on other sites
May I make a suggestion? Switch to IM. You could do D3DX and it would be a lot better since it will be supported in the future. I wish I could help you, but I didn''t really study RM. Not many people here know how to use RM so it would be hard to ask for help.

------------------------
Captured Reality

Share this post


Link to post
Share on other sites
Hey Nintendo boy,

I use both. Just now I want to figure out this problem.

Gandalf the White

Share this post


Link to post
Share on other sites
I think the problem is my 3D card (RIVA TNT PCI). I have tried almost everything now.

Any suggestions?

Gandalf the White

Share this post


Link to post
Share on other sites

  • Advertisement