[vtkusers] [Fwd: Re: Using OpenGl with VTK]

Mohammed Amine SAHTARI msahtari at gmail.com
Tue Aug 19 12:12:02 EDT 2008


*  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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20080819/20849e13/attachment.htm>


More information about the vtkusers mailing list