[vtkusers] [Fwd: Re: Using OpenGl with VTK] Color using glColor3f
Mohammed Amine SAHTARI
msahtari at gmail.com
Wed Aug 20 12:04:35 EDT 2008
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20080820/c8e1f124/attachment.htm>
More information about the vtkusers
mailing list