derelict glfw won't set callbacks
Andrej Mitrovic via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat May 24 06:53:18 PDT 2014
On 5/24/14, Vlad Levenfeld via Digitalmars-d-learn
<digitalmars-d-learn at puremagic.com> wrote:
> Any attempt to set callbacks in GLFW returns a null and the
> callback doesn't work.
>
> The first enforcement fails in this example:
>
> DerelictGLFW3.load ();
> enforce (glfwSetErrorCallback (&error_callback));
It's ok if this fails because this is how it's documented:
* @return The previously set callback, or `NULL` if no callback was set or an
* error occurred.
Below is a full snippet of using DerelictGLFW and a simple escape key binding:
-----
import derelict.glfw3.glfw3;
import std.conv;
import std.exception;
import std.stdio;
shared static this()
{
DerelictGLFW3.load();
}
extern(C) void error_callback(int error, const(char)* description) nothrow
{
printf("%s %s", error, description);
}
int main()
{
/* Initialize the library */
enforce(glfwInit());
glfwSetErrorCallback(&error_callback);
GLFWwindow* window;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", null, null);
scope(exit) glfwTerminate();
enforce(window !is null);
/* Make the window's context current */
glfwMakeContextCurrent(window);
extern(C) void onKeyEvent(GLFWwindow* window, int key, int
scancode, int state, int modifier) nothrow
{
if (key == GLFW_KEY_ESCAPE && state == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}
glfwSetKeyCallback(window, &onKeyEvent);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
return 0;
}
-----
More information about the Digitalmars-d-learn
mailing list