DrawTexture in DRAWPASS_HANDLES [SOLVED]

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/05/2011 at 07:43, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R12.043 
Platform:   Windows  ;   
Language(s) :     C++  ;

---------
Hi everybody,
I want to Display some text on screen which only should be drawn when my object is selected. To achieve this I create a GeClipMap at Viewport-resolution and draw the strings onto it. At the end I draw it on Screen using the DrawTexture function. This works fine in DRAWPASS_OBJECT but in DRAWPASS_HANDLES nothing is drawn on screen.
Thanks for any help!
Satara

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/05/2011 at 09:23, xxxxxxxx wrote:

Yes that is right. What exactly is your question?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/05/2011 at 16:14, xxxxxxxx wrote:

Is it not possible to use drawtexture in drawpass_handles?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/05/2011 at 17:18, xxxxxxxx wrote:

Apparently not. 🙂 Didn't work for me either.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 06/05/2011 at 01:52, xxxxxxxx wrote:

ok thanks!

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/05/2011 at 01:14, xxxxxxxx wrote:

Another problem:
How can I draw the Text in front of the geometry (with drawtexture)?
This is how it looks currently:

here is the code:
DRAWRESULT Draw(BaseObject *op, DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh) {
if (drawpass == DRAWPASS_OBJECT)
{
....
// render the clip map to the viewport
bd->SetMatrix_Screen();
bd->SetLightList(BDRAW_SETLIGHTLIST_NOLIGHTS);
Vector pnts[4] = { Vector(0, 0, 0), Vector(0, height, 0), Vector(width, height, 0), Vector(width, 0, 0) };
Vector cols[4] = { Vector(1, 1, 1), Vector(1, 1, 1), Vector(1, 1, 1), Vector(1, 1, 1) };
Vector nrms[4] = { Vector(0, 0, -1), Vector(0, 0, -1), Vector(0, 0, -1), Vector(0, 0, -1) };
Vector uvs[4] = { Vector(0, 0, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(1, 0, 0) };
bd->DrawTexture(clipMap->GetBitmap(), pnts, cols, nrms, uvs, 4, DRAW_ALPHA_NORMAL, DRAW_TEXTUREFLAGS_INTERPOLATION_NEAREST);
...
}

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 17/05/2011 at 03:55, xxxxxxxx wrote:

Draw it in the handles drawing pass. Also make sure to use a clockwise texture polygon e.g. { Vector(0,0,0), Vector(1,0,0), Vector(1,1,0), Vector(0,1,0) }.

Example:

  
DRAWRESULT RoundedTube::Draw(BaseObject *op, DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh)  
{  
  if (drawpass!=DRAWPASS_HANDLES) return DRAWRESULT_SKIP;  
  
  bd->SetLightList(BDRAW_SETLIGHTLIST_NOLIGHTS);  
  
  bd->SetMatrix_Screen();  
  
  Vector padr[4] = { Vector(200,200,0), Vector(300,200,0), Vector(300,300,0), Vector(200,300,0) };  
  Vector cadr[4] = { Vector(1,1,1), Vector(1,1,1), Vector(1,1,1), Vector(1,1,1) };  
  Vector nadr[4] = { Vector(0,0,-1), Vector(0,0,-1), Vector(0,0,-1), Vector(0,0,-1) };  
  Vector uvadr[4] = { Vector(0,0,0), Vector(1,0,0), Vector(1,1,0), Vector(0,1,0) };  
  
  bd->DrawTexture(bmp, padr, cadr, nadr, uvadr, 4, DRAW_ALPHA_NONE, DRAW_TEXTUREFLAGS_0);  
  
  return DRAWRESULT_OK;  
}  

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 17/05/2011 at 04:53, xxxxxxxx wrote:

Ah! Cool. thx, very good to know 🙂

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 17/05/2011 at 12:39, xxxxxxxx wrote:

Looks perfect, thx a lot Matthias!

On 06/08/2014 at 19:40, xxxxxxxx wrote:

Hi All, but if is draw in the Handle time, the texture will be not visibile if the object is not selected.

regards
Renato