[vtkusers] [Fwd: Re: Using OpenGl with VTK] Color using glColor3f
Francois Bertel
francois.bertel at kitware.com
Wed Aug 20 12:17:09 EDT 2008
What do you mean by glPopAttrib() for (2)? It should be for (3).
On Wed, Aug 20, 2008 at 12:04 PM, Mohammed Amine SAHTARI
<msahtari at gmail.com> wrote:
>
> Thank you very much François. It works!
>
> In order to be able ,in future, to copy a large code of OpenGl directly
> without checking each time all the OpenGl states. Is there a way to:
>
> 1) Store the whole state of the VTK/OpenGl properties : light,colors,.....
> 2) copy the code OpenGl code in my function
> 3) restore VTK/OpenGl state properties
>
> For example, I try glPushAttrib(GL_ALL_ATTRIB_BITS) for (1) , and
> glPopAttrib() for (2) but it doesn't work.
>
> Do you have any idea ?
>
> Thank you for responding,
>
> Amine
>
> 2008/8/20 Francois Bertel <francois.bertel at kitware.com>
>>
>> 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
>> _______________________________________________
>> 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