On Saturday, 3 September 2016 at 09:30:58 UTC, Darren wrote:
Thanks for the information. The errors for the tutorial I _was_ trying to make work are as follows:

source\app.d(9,5): Error: undefined identifier 'Window', did you mean variable 'window'? source\app.d(98,12): Error: undefined identifier 'Window', did you mean variable 'window'?
source\app.d(101,14): Error: undefined identifier 'GLBuffer'
source\app.d(104,14): Error: undefined identifier 'Shader'
source\app.d(107,13): Error: undefined identifier 'Program', did you mean variable 'program'?
source\app.d(110,15): Error: undefined identifier 'Attribute'

I thought I might have needed another package for these, and gfm seemed to contain what I need in the form of the opengl sub-package. But even after importing that, it only gets rid of the GLBuffer error.

I tried to follow another tutorial. Link to source code: http://www.learnopengl.com/code_viewer.php?code=getting-started/hellotriangle

I'm having more success with this one. I pretty much hacked away at this and did my best to convert from C-style code to D. The window gets made and it has the green-ish background, but it's not drawing any triangles. Should I copy/paste the code I'm using in case I made a mistake?

It's not quite in a practically-usable state yet, but the SDL2 & OpenGL wrapper I'm working on may interest you as an example implementation if nothing else. https://github.com/pineapplemachine/mach.d/tree/master/mach/sdl

Here's an example of a functioning program using the package. At the moment I'm working on exposing SDL2's event and other input systems.

    import std.datetime;
    import mach.math.vector2;
    import mach.sdl.window;
    import mach.sdl.texture;
    import mach.sdl.color;
    import mach.sdl.primitives;

    void main(){
        // Create a window
        auto win = new Window(300, 300);
        win.position = Vector2!int(200, 200);
        // Load a texture
        auto tex = Texture("pineapple.png");
        // Loop for 5 seconds
        StopWatch sw;
        sw.start();
        auto maxms = 5000f;
        while(true){
            auto ms = sw.peek().msecs;
            if(ms >= maxms) break;
            // Fill with green
            win.clear(0, ms / maxms / 2, 0);
            // Draw centered image
            tex.draw((win.size - tex.size) / 2);
            // Draw red lines at top and bottom
            lines(Color!ubyte.Red,
                Vector2!int(8, 8), Vector2!int(292, 8),
                Vector2!int(292, 292), Vector2!int(8, 292)
            );
            // Display changes
            win.swap();
        }
    }

  • Using OpenGL Darren via Digitalmars-d-learn
    • Re: Using OpenGL Mike Parker via Digitalmars-d-learn
      • Re: Using OpenGL Darren via Digitalmars-d-learn
        • Re: Using OpenGL pineapple via Digitalmars-d-learn
          • Re: Using OpenG... Darren via Digitalmars-d-learn
            • Re: Using ... Lodovico Giaretta via Digitalmars-d-learn
              • Re: Us... Darren via Digitalmars-d-learn
                • Re... Lodovico Giaretta via Digitalmars-d-learn
                • Re... Mike Parker via Digitalmars-d-learn
                • Re... Darren via Digitalmars-d-learn
              • Re: Us... Mike Parker via Digitalmars-d-learn
                • Re... Darren via Digitalmars-d-learn
                • Re... Mike Parker via Digitalmars-d-learn
                • Re... Mike Parker via Digitalmars-d-learn

Reply via email to