Jump to content

  • Log In with Google      Sign In   
  • Create Account


Making lines in 3D space in Direct X


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 Muzzy A   Members   -  Reputation: 622

Like
0Likes
Like

Posted 26 May 2012 - 08:02 PM

I'm trying to create a line in 3D space, but it's not working right for me, it only causes the other objects to have a pattern of black spots

I don't know much about how to create a line in 3D space, it's hard to find anything on it.

// Header
struct LineVert
{
	 Vector3 Position;
};

IDirect3DVertexDeclaration9	 *vertDecl;
IDirect3DVertexBuffer9		 *vertBuff;

// Cpp
LineVert verts[] =
{
	 { Vector3(0,0,0) },
	 { Vector3(2,0,0) }
};

d3dDevice->CreateVertexBuffer(sizeof(LineVert)*2,0,0,D3DPOOL_MANAGED,&vertBuff,0);
CopyToVRam(verts,vertBuff);

D3DVERTEXELEMENT9 decl[] =
{
	 {0, 0,  D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
	 D3DDECL_END()
};
d3dDevice->CreateVertexDeclaration(decl, &vertDecl);

Now this is how i draw it

d3dDevice->SetVertexDeclaration(vertDecl);
d3dDevice->SetStreamSource(0,vertBuff,0,sizeof(LineDecl));
d3dDevice->DrawPrimitive(D3DPT_LINELIST,0,1);

It produces black spots like the image i have attached, the shader for the line simply returns the color i pass it
float color[4] = { 1,1,1,1 };
shader->SetFloatArray(gColor,color,4);

Any help would be greatly appreciated

Attached Thumbnails

  • Pattern of black spots.png

Edited by Muzzy A, 26 May 2012 - 08:07 PM.


Sponsor:

#2 clb   Members   -  Reputation: 1777

Like
0Likes
Like

Posted 27 May 2012 - 01:40 AM

In your code snippet, I see geometry generated for a single line segment from (0,0,0) to (2,0,0). How did that end up drawing a circle in the first place? Can you post that piece of code, since it's the relevant part for this question.

Did you use a rotation matrix to trace that single line in all possible angles to crate a sphere? Or is that sphere drawn in some other way? Where exactly in the image is that line (0,0,0)->(2,0,0) drawn?
Me+PC=clb.demon.fi | C++ Math and Geometry library: MathGeoLib, test it live! | C++ Game Networking: kNet | 2D Bin Packing: RectangleBinPack | Use gcc/clang/emcc from VS: vs-tool | Resume+Portfolio | gfxapi, test it live!

#3 Muzzy A   Members   -  Reputation: 622

Like
0Likes
Like

Posted 27 May 2012 - 04:29 AM

i made that sphere with d3dxcreatesphere lol. I apologize, the line is supposed to come from the center of the sphere which is at the origin and to the center of another sphere at (2,0,0). That's what all the spheres look like when i try to draw this line sorry for the misunderstanding lol

#4 clb   Members   -  Reputation: 1777

Like
0Likes
Like

Posted 27 May 2012 - 04:57 AM

So the line does not appear at all? Is depth buffering active, perhaps it gets hidden behind the sphere geometry? Try using PIX to debug what kind of output occurs during the line draw step, and to troubleshoot that the device state is what you expect.
Me+PC=clb.demon.fi | C++ Math and Geometry library: MathGeoLib, test it live! | C++ Game Networking: kNet | 2D Bin Packing: RectangleBinPack | Use gcc/clang/emcc from VS: vs-tool | Resume+Portfolio | gfxapi, test it live!

#5 Muzzy A   Members   -  Reputation: 622

Like
0Likes
Like

Posted 27 May 2012 - 06:08 AM

ok i'm downloading PIX atm, never used it before. but i'm sure it's not hard

#6 Amr0   Members   -  Reputation: 1030

Like
0Likes
Like

Posted 27 May 2012 - 01:53 PM

Somewhat relevant, I remember I converted the "volumetric lines" demo from OpenGL to Direct3D 9. The demo originally came with the NVidia SDK. Here is the Direct3D9 sample in case it's relevant to your interests.
Also, If you have an NVidia graphics card, you may be interested in checking out NVidia PerfHUD as an alternative to PIX. It's generally very pleasant to work with.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS