[vtkusers] [Fwd: Re: Using OpenGl with VTK] Color using glColor3f

Francois Bertel francois.bertel at kitware.com
Wed Aug 20 11:18:29 EDT 2008


Maybe lighting is on. In this case, the color is the result of the
lighting equation involving material properties, normals and lights
properties instead of the current OpenGL color:

Try glDisable(GL_LIGHTING);

On Wed, Aug 20, 2008 at 4:43 AM, Mohammed Amine SAHTARI
<msahtari at gmail.com> wrote:
> The background is gray and The OpenGl lines has been dispalyed as gray !
> When I  change  the  background of my screen  I was able to visualize the
> Opengl lines/faces.
>
> I am wondering why the OpenGL lines is grey knowing that i am using
> glColor3f [(1,0,0);(0,1,0),..] in RenderOpaqueGeometry which should affect
> other colors to the lines ?!
>
> Shall I enable/change an option to fix this matter ? ...Please help!
>
> Amine
>
>
>
> 2008/8/19 Mohammed Amine SAHTARI <msahtari at gmail.com>
>>
>>   Thank you very much Amy. The program compiles without any errors!
>>
>>   However , I still have a problem : The OpenGl lines doesn't display on
>> the screen.
>>
>>   I check In Debug Mode, the RenderOpaqueGeometry function is executed
>> permanently ( following the pipeline).
>>
>>
>>
>> ----- In the main propram----------
>>
>>     .............
>>
>>      vtkRenderer  *renderer = vtkRenderer  ::New();
>>
>>       vtkMyDerivedProp-> RenderOpaqueGeometry(renderer);
>>
>>       renderer->AddProp(vtkMyDerivedProp);
>>
>>       ...........
>>
>> ---- In  Myderived class----------------
>>
>> virtual int RenderOpaqueGeometry(vtkViewPort* )
>>
>> {
>>
>>             glBegin (GL_LINES);
>>
>>              glVertex2f (-2.5, 2.5);
>>              glVertex2f (2.5, -2.5);
>>              glEnd ();
>> }
>>
>> Any suggestions ? Did I miss something ?
>>
>> Thank you in advance,
>> Amine
>>
>>
>> 2008/8/19 Amy Squillacote <ahs at cfdrc.com>
>>>
>>> Hi Amine,
>>>
>>> You cannot use VTK_RENDERING_EXPORT since you are not adding your class
>>> to the vtkRendering library. You'll need to create your own export macro.
>>> There is an example of setting up your own additional library for VTK in the
>>> VTK/Examples/Build/vtkLocal directory of the VTK source tree.
>>>
>>> - Amy
>>>
>>> Mohammed Amine SAHTARI wrote:
>>>>
>>>> I use vtkStandardNewMacro to add New macro. The problem is that I got 5
>>>> link errors even if I include the librairies of VTK (In VS 8).
>>>>
>>>> Hereby, you find my derived class (.h & .cxx).
>>>>
>>>> ---------------- vtkMyDerivedProp.h -------------------------
>>>>
>>>> #ifndef __vtkMyDerivedProp_h
>>>> #define __vtkMyDerivedProp_h
>>>> #include "vtkProp.h"
>>>>
>>>> class VTK_RENDERING_EXPORT vtkMyDerivedProp : public vtkProp
>>>> {
>>>> public:
>>>>
>>>>  vtkTypeRevisionMacro(vtkMyDerivedProp,vtkProp);
>>>>  void PrintSelf(ostream& os, vtkIndent indent);
>>>>  static vtkMyDerivedProp* New();
>>>>
>>>> protected:
>>>>
>>>>  vtkMyDerivedProp();
>>>>  ~vtkMyDerivedProp();
>>>>
>>>> private:
>>>>
>>>>  vtkMyDerivedProp(const vtkMyDerivedProp&);  // Not implemented.    void
>>>> operator=(const vtkMyDerivedProp&);  // Not implemented.
>>>>
>>>> };
>>>>
>>>> #endif
>>>>
>>>> ---------------- vtkMyDerivedProp.cxx -------------------------
>>>>
>>>> #include "vtkMyDerivedProp.h"
>>>>
>>>> #include "vtkObjectFactory.h"
>>>>
>>>> vtkCxxRevisionMacro(vtkMyDerivedProp, "$Revision: 1.36 $");
>>>>
>>>> vtkStandardNewMacro(vtkMyDerivedProp);
>>>>
>>>> vtkMyDerivedProp::vtkMyDerivedProp(){}
>>>>
>>>> vtkMyDerivedProp::~vtkMyDerivedProp(){}
>>>>
>>>> void vtkMyDerivedProp::PrintSelf(ostream& os, vtkIndent indent)
>>>> {
>>>>  this->Superclass::PrintSelf(os,indent);
>>>> }
>>>>
>>>> -------------------------------------- Errors
>>>> ------------------------------------------
>>>>
>>>> *I got 5 errors *
>>>>
>>>> 1>vtkMyDerivedProp.obj : error LNK2001: unresolved external symbol
>>>> "private: virtual char const * __thiscall
>>>> vtkMyDerivedProp::GetClassNameInternal(void)const "
>>>> (?GetClassNameInternal at vtkMyDerivedProp@@EBEPBDXZ)
>>>>
>>>> 1>vtkMyDerivedProp.obj : error LNK2001: unresolved external symbol
>>>> "public: virtual int __thiscall vtkMyDerivedProp::IsA(char const *)"
>>>> (?IsA at vtkMyDerivedProp@@UAEHPBD at Z)
>>>>
>>>> 1>vtkMyDerivedProp.obj : error LNK2001: unresolved external symbol
>>>> "protected: virtual class vtkObjectBase * __thiscall
>>>> vtkMyDerivedProp::NewInstanceInternal(void)const "
>>>> (?NewInstanceInternal at vtkMyDerivedProp@@MBEPAVvtkObjectBase@@XZ)
>>>>
>>>> 1>vtkMyDerivedProp.obj : error LNK2019: unresolved external symbol
>>>> "__declspec(dllimport) const vtkMyDerivedProp::`vftable'"
>>>> (__imp_??_7vtkMyDerivedProp@@6B@) referenced in function "protected:
>>>> __thiscall vtkMyDerivedProp::vtkMyDerivedProp(void)"
>>>> (??0vtkMyDerivedProp@@IAE at XZ)
>>>>
>>>> 1>C:\Documents and Settings\asahtari\Mes
>>>> documents\Projet\Bibillothéques\VTK\MyTest\MyLib.dll : fatal error LNK1120:
>>>> 4 unresolved externals
>>>>
>>>> When I put vtkMyDerivedProp instead of vtkProp3D, it compiles without
>>>> any error.
>>>> I don't understand .Is it a matter of VTK librairies ? Please Help!
>>>>
>>>> Amine
>>>>
>>>> 2008/8/14 Utkarsh Ayachit <utkarsh.ayachit at kitware.com
>>>> <mailto:utkarsh.ayachit at kitware.com>>
>>>>
>>>>    Please keep the questions to the mailing list, so that others can
>>>>    benefit/contribute as well.
>>>>
>>>>    To add New():
>>>>    * take a look at any concrete class in VTK eg. vtkCollection (the
>>>>    New is
>>>>     declared in the header and defined using
>>>>    vtkStandardNewMacro(vtkCollection); in the cxx.
>>>>
>>>>    * not using the viewport in the RenderOpaqueGeometry should not be a
>>>>    problem. It's only provided if needed.
>>>>
>>>>    Utkarsh
>>>>
>>>>
>>>>
>>>>
>>>>    Mohammed Amine SAHTARI wrote:
>>>>
>>>>        Thank you very much Utkarsh.
>>>>
>>>>        I am tring to implement your solution but I have some problems.
>>>>
>>>>        1) I create vtkMyDerivedProp.h and vtkMyDerivedProp.cxx
>>>>
>>>>         I subclass vtkProp :
>>>>              - I copy the class code of vtkProp3D (.h and .c files)
>>>>              - I replace all the words :
>>>>                      vtkProp3D /by/ /vtkMyDerivedProp /and Prop3D by
>>>>        /MyDerivedProp/
>>>>              - I include /"vtkGl.h"/ in vtkMyDerivedProp.h
>>>>              - I add RenderOpaqueGeometry() in vtkMyDerivedProp.h
>>>>        like this :
>>>>                      /virtual int RenderOpaqueGeometry(vtkViewPort* )
>>>>                      {/
>>>>
>>>>        /             glBegin (GL_LINES);
>>>>
>>>>                    glVertex2f (-2.5, 2.5);
>>>>
>>>>                    glVertex2f (2.5, -2.5);
>>>>
>>>>
>>>>                    glEnd ();/
>>>>
>>>>        /               }/
>>>>
>>>>        2) In my program :           - I include and instantiate
>>>> vtkMyDerivedProp :
>>>>
>>>>           /  //# include "vtkMyDerivedProp.h"
>>>>             vtkMyDerivedProp *MyDerivedProp;/
>>>>
>>>>        -         I use  vtkMyDerivedProp :
>>>>
>>>>        /     vtkRenderer  *renderer = vtkRenderer  ::New();/
>>>>
>>>>        /      vtkMyDerivedProp-> RenderOpaqueGeometry(renderer);/
>>>>
>>>>        /      renderer->AddProp(vtkMyDerivedProp);/
>>>>
>>>>
>>>>        *Problem *: vtkMyDerivedProp is used without been defined!
>>>>
>>>>        *Question 1 :* How can I define it ?
>>>>  (vtkMyDerivedProp::New()  doesn't work)
>>>>
>>>>        *Question 2 :*  RenderOpaqueGeometry has vtkViewPort* in input
>>>>        but doesn't use it. Is it a problem ?
>>>>
>>>>        How can I fix this?
>>>>
>>>>        Looking forward to hear from you soon,
>>>>
>>>>        Amine**
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>        2008/8/14 Utkarsh Ayachit <utkarsh.ayachit at kitware.com
>>>>        <mailto:utkarsh.ayachit at kitware.com>
>>>>        <mailto:utkarsh.ayachit at kitware.com
>>>>        <mailto:utkarsh.ayachit at kitware.com>>>
>>>>
>>>>           iren->Start() results in repeated calls to renWin->Render() on
>>>>           interaction. This will clear whatever you had drawn. A better
>>>>           approach is to subclass vtkProp(or one of it's subclasses)
>>>>        and put
>>>>           your rendering code in RenderOpaqueGeometry() /
>>>>           RenderTranslucentPolygonalGeometry()/ RenderOverlay() etc.
>>>>        depending
>>>>           upon what pass you want it to be rendered and then add the
>>>>        prop to
>>>>           the renderer. That way every time the renderer re-renders,
>>>>        your code
>>>>           will be executed.
>>>>
>>>>
>>>>           Utkarsh
>>>>
>>>>           Mohammed Amine SAHTARI wrote:
>>>>
>>>>
>>>>               I want to add an OpenGl code in an application of VTK.
>>>>
>>>>               For this purpose, I try to draw lines using commands
>>>>        OpenGL.:
>>>>
>>>>               *1) I add this on the top of the program :*
>>>>
>>>>               #include <GL/gl.h>
>>>>               *2) I place my OpenGL commands after renWin->Render()
>>>>        but before
>>>>               iren->Start()** :  *
>>>>
>>>>
>>>>               renWin->Render();
>>>>
>>>>                  glBegin (GL_LINES);
>>>>                     glVertex2f (-2.5, 2.5);
>>>>                     glVertex2f (2.5, -2.5);
>>>>                   glEnd ();
>>>>
>>>>               iren->Start();
>>>>
>>>>
>>>>               *But it doesn't appears.*
>>>>
>>>>               did I miss something ? How can I do this work ?
>>>>               Looking forward to hear from you soon,
>>>>
>>>>               Amine
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>               _______________________________________________
>>>>               This is the private VTK discussion list.
>>>>               Please keep messages on-topic. Check the FAQ at:
>>>>               http://www.vtk.org/Wiki/VTK_FAQ
>>>>               Follow this link to subscribe/unsubscribe:
>>>>               http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>>
>>>>    _______________________________________________
>>>>    This is the private VTK discussion list.
>>>>    Please keep messages on-topic. Check the FAQ at:
>>>>    http://www.vtk.org/Wiki/VTK_FAQ
>>>>    Follow this link to subscribe/unsubscribe:
>>>>    http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> This is the private VTK discussion list.
>>>> Please keep messages on-topic. Check the FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>
>>> --
>>> Amy Squillacote                    Phone: (256) 726-4839
>>> Computer Scientist                 Fax: (256) 726-4806
>>> CFD Research Corporation           Web: http://www.cfdrc.com
>>> 215 Wynn Drive, Suite 501
>>> Huntsville, AL  35805
>>>
>>>
>>
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>



-- 
François Bertel, PhD | Kitware Inc. Suite 204
1 (518) 371 3971 x113 | 28 Corporate Drive
 | Clifton Park NY 12065, USA



More information about the vtkusers mailing list