This seems to be working for me.
On Sun, Sep 27, 2009 at 2:39 AM, Christian Schmid <[email protected]>wrote:
> Hi.
>
> Thank you for your valuable hints. On the one hand I want to use VBOs
> (which makes me force using POGL as you said) but on the other hand I
> want to continue using SDL for all the nice things it provides
> (furthermore it seems glut is a bit broken and no competition to SDL).
> So I am now trying to combine both worlds. Maybe I am doing something
> stupid wrong, but it seems there is some buffer problems when not using
> SDL::OpenGL. At least I don't see any window when I say "opengl => 1"
> and I see a black window when I say "opengl => 0".
>
> I really appreciate your help in this matter. For your coincidence, I
> set up a really short code and attached it, so you can immediately see
> whats wrong. Basically its just some cubes spinning around. Feel free to
> comment right into the code if you want.
>
>
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use OpenGL qw(:all);
> use SDL::App;
> use SDL::Event;
>
> my ($SDLAPP, $WIDTH, $HEIGHT, $SDLEVENT);
>
> $| = 1;
> $WIDTH = 1024;
> $HEIGHT = 768;
> $SDLAPP = SDL::App->new(-title => "Test shit", -width => $WIDTH, -height
> => $HEIGHT, -gl => 1);
> $SDLEVENT = SDL::Event->new;
>
> SDL::ShowCursor(0);
> glEnable(GL_DEPTH_TEST);
> glMatrixMode(GL_PROJECTION);
> glLoadIdentity;
> gluPerspective(60, $WIDTH / $HEIGHT, 1, 1000);
> glTranslatef(0, 0, -20);
>
>
>
> while (1) {
> &handlepolls;
> glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
> glRotatef(.1, 1, 1, 1);
> &drawscene;
> $SDLAPP->sync;
> }
>
>
>
> sub drawscene {
> my ($color, $x, $y, $z);
>
> for (-2 .. 2) {
> glPushMatrix;
> glTranslatef($_ * 3, 0, 0);
> glColor3f(1, 0, 0);
> &draw_cube;
> glPopMatrix;
> }
>
> return "";
> }
>
>
>
> sub draw_cube {
> my (@indices, @vertices, $face, $vertex, $index, $coords);
>
> @indices = qw(4 5 6 7 1 2 6 5 0 1 5 4
> 0 3 2 1 0 4 7 3 2 3 7 6);
> @vertices = ([-1, -1, -1], [ 1, -1, -1],
> [ 1, 1, -1], [-1, 1, -1],
> [-1, -1, 1], [ 1, -1, 1],
> [ 1, 1, 1], [-1, 1, 1]);
>
> glBegin(GL_QUADS);
>
> foreach $face (0..5) {
> foreach $vertex (0..3) {
> $index = $indices[4 * $face + $vertex];
> $coords = $vertices[$index];
> glVertex3f(@$coords);
> }
> }
>
> glEnd;
>
> return "";
> }
>
>
>
>
> sub handlepolls {
> my ($type, $key);
>
> $SDLEVENT->pump;
>
> while ($SDLEVENT->poll) {
> $type = $SDLEVENT->type();
> $key = ($type == 2 or $type == 3) ? $SDLEVENT->key_name : "";
>
> if ($type == 4) { printf("You moved the mouse! x=%s y=%s xrel=%s
> yrel=%s\n", $SDLEVENT->motion_x, $SDLEVENT->motion_y,
> $SDLEVENT->motion_xrel, $SDLEVENT->motion_yrel) }
> elsif ($type == 2) { print "You are pressing $key\n" }
> elsif ($type == 3) { print "You released $key\n" }
> elsif ($type == 12) { exit }
> else { print "TYPE $type UNKNOWN!\n" }
>
> if ($type == 2) {
> if ($key eq "q" or $key eq "escape") { exit }
> }
> }
>
> return "";
> }
>
>
> Kartik Thakore schrieb:
> >
> > On 26-Sep-09, at 4:06 AM, Christian Schmid <[email protected]>
> > wrote:
> >
> >> Hi Kartik,
> >>
> >> Thank you for your reply. I am new to OpenGL programming. I used to
> >> write everything in Perl. No matter if its a network stack or a fully
> >> blown web-custimizable FTP server. Now I am trying to code blast-away
> >> 3d-applications... in Perl. Some people say this is crazy, but I am sure
> >> as soon as I have created an amazing framework, it will work as well as
> >> C-applications do.
> > It should!
> >>
> >>
> >> That said, I tried figuring out what I can do in Perl without using Perl
> >> too much for the "loads and loads of stupid vertex work". I also rely on
> >> caching as good as I can, especially on models with 1 Mio Polygons, I
> >> need the VBOs. Unfortunately it seems the VBOs are only part of OpenGL
> >> 1.5 or higher, and since its not implemented in Perl-SDL, I suppose
> >> Perl-SDL does not support 1.5 yet?
> > I don't think so I would recommend looking in to Perl OpenGL. The
> > module is opengl on cpan.
> >>
> >>
> >> Sure, I could just try to implement it myself in Perl-SDL. But I think
> >> this is not the very best solution and (since I don't know anything
> >> about Perl-SDLs interna, nor libsdl) this would take a very long time I
> >> suppose.
> > If your concern is only opengl then the module I mentioned above,
> > POGL, is your best bet.
> >>
> >>
> >> So to bring it to the point: What OpenGL version is supported (at least
> >> glGenBuffers does not work). When will OpenGl 3.1 be supported? ;) Most
> >> stunning effects are only possible with the latest revision I suppose.
> > POGL has more features then SDL Perl's implementation. We are actually
> > considering to move our base to theirs.
> >>
> >>
> >> Do people widely use OpenGL with Perl-SDL?
> >>
> > I haven't seen extensive use so far. I could be wrong as I have only
> > started maintaining a month ago.
> >> What would it take for you to implement the newest OpenGL technology in
> >> Perl-SDL?
> > Help to migrate to POGL. Also a latest system which can handle the
> > latest video card would help.
> >>
> >>
> >> Do you accept motivation-pushing donations in case its much work?
> > Give a shout out to POGL devs. I am more interested in making SDL Perl
> > work well with their OpenGL.
> >>
> >>
> >> Are you still highly interested in spending time in Perl-SDL?
> >>
> > Yup :). If you are interested in SDL too besides just OpenGL, would
> > you consider setting up bounties that you would pay for and the core
> > devs of SDL would check?
> >
> > I have wanted to sell some games and pump money in the form of
> > bounties into SDL Perl, but I have been busy coding internals.
> >> What is your current occupation if I may ask?
> > I am an intern/student. That's all I am saying :p
> >>
> >>
> >> - Christian
> >>
> >>
> >> Kartik Thakore schrieb:
> >>> Hi Christian,
> >>>
> >>> Kartik Thakore
> >>>
> >>> On 26-Sep-09, at 2:39 AM, Christian Schmid <[email protected]>
> >>> wrote:
> >>>
> >>>> Hello.
> >>>>
> >>>> As far as I have found out, you are the main maintainer of
> >>>> perl-sdl. Is
> >>>> this correct?
> >>> Yes this is correct.
> >>>>
> >>>>
> >>>> I have some questions about OpenGL V1.5 and later implementations in
> >>>> Perl-SDL, the future about Perl-SDL and possible donations to the
> >>>> respective hard working programmers, who have made it possible to
> >>>> produce high-performance OpenGL applications within Perl.
> >>>> I am looking
> >>>> forward for your reply.
> >>>>
> >>> What are your questions I would be glad to answer them?
> >>>> Best regards,
> >>>> Christian Schmid
> >>>>
> >>> Regards
> >>>
> >
> >
>