• Advertisement
Sign in to follow this  

GDITexture - 3D

This topic is 2357 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'm currently trying to draw some text in a 3D Application and am having zero luck.

Currently, I'm using the ESRI ArcGlobe control which is a 3D Globe. I've inserted that inside of a control that inherits from OpenGLControl so I can have access to the override void glDraw()

I'm trying the following code but no such luck. NOTE: Most of this code comes from the sample gdiFont.cs file

GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
GL.glLoadIdentity();
GL.glTranslated(0,0,-1000);
GL.glRotated(35 , 1, 1.2 , 0.2);
GL.glScaled(2,2,2);

GL.glPushMatrix();
GL.glColor3f(1,0,0);
GL.glRotated(180,0,1,0);

myFont.DrawString("TEST");



Any ideas? Anyone ever do something like this before where a control is chaining inheritance?

Share this post


Link to post
Share on other sites
Advertisement
The code itself looks fine, you'd have to give us more information about the inheritance part, probably both classes, and what exactly do you mean by "no luck", does it crash? does anything appear on the screeen?

Share this post


Link to post
Share on other sites

The code itself looks fine, you'd have to give us more information about the inheritance part, probably both classes, and what exactly do you mean by "no luck", does it crash? does anything appear on the screeen?



Sure, by no luck I mean nothing shows up on the screen. My inheritance is like this:

ArcGlobeControl : MapControl
MapControl : OpenGLControl


In ArcGlobeControl I do the following

public override void glDraw()
{
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
GL.glLoadIdentity();
GL.glTranslated(0,0,-1000);
GL.glRotated(35 , 1, 1.2 , 0.2);
GL.glScaled(2,2,2);

GL.glPushMatrix();
GL.glColor3f(1,0,0);
GL.glRotated(180,0,1,0);

myFont.DrawString("TEST");
}


What's really odd is that I have a separate class, called DataLayer that a Instantiate inside of the GlobeControl and in that I have the following

protected void SetupOpenGL()
{
myGlobeDisplayEvents = myGlobeControl.GlobeViewer.GlobeDisplay;

myGlobeDisplayEvents.AfterDraw += MyHandler();
}


private void MyHandler(ISceneViewer inSceneViewer)
{
//GL Drawing code
// GL Draw a huge box
// WOW I HAVE A 3D box that shows up on the globe
}


However, inside that class I can never seem to create a GDITextureFont. It does create one in the ArcGlobeControl , but not in the DataLayer.

Any thoughts?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement