Apologies for the length of my first question. When I posted this in the OpenGL forum respondents asked what I wanted to do, what language I was using, and one directed me to this forum.
So here is too much information. I believe the obstacle that prevents me from wrapping these functions into a nice class is the lack of a parameter argument for functions like glfwSetKeyCallback and callback functions conforming to GLFWkeyfun. But if callback functions could have a parameter pointing to the instance of a class then, I believe, a call to that class callback function could work like this:. You can associate one pointer to each GLFW window.
You can easily put pointer to your object in there, and later retrieve it back in callback. See glfwSetWindowUserPointer for documentation.OpenGL/C++ 3D Tutorial 38 - Mouse input and delta time (Prep for camera)
It took me about 15 minutes to modify and test my code. All I just read this and thank you. I am a very new programmer so this will take me awhile to understand but it is definitely on point!
Passing Parameters To Callbacks? I have an aversion to globally passed arguments. An example would be the parameter you can pass to a Windows dialog procedure. So, anyway… Does any of this make sense? Is this something anybody should want to do? And again, sorry for the length of my first post. Thanks Larry. Thanks again for showing it to me mmozeiko.When thinking about keyboard input, it is important to remember that a key stroke is not the same as a character.
For example, pressing the A key could result in any of the following characters.
Constant Field Values
When you press a key, the hardware generates a scan code. Scan codes vary from one keyboard to the next, and there are separate scan codes for key-up and key-down events.
You will almost never care about scan codes. The keyboard driver translates scan codes into virtual-key codes. Virtual-key codes are device-independent. Pressing the A key on any keyboard generates the same virtual-key code.
In general, virtual-key codes do not correspond to ASCII codes or any other character-encoding standard. In some respects this mapping is unfortunate, because you should never think of virtual-key codes as characters, for the reasons discussed.
The header file WinUser. For the complete list of virtual-key codes, see Virtual-Key Codes. Instead, just use the numeric value. There are two types of system key:. The F10 key activates the menu bar of a window. Various ALT-key combinations invoke system commands. In addition, if a window has a menu, the ALT key can be used to activate menu items.
Some ALT key combinations do not do anything. This includes the function keys other than F If you hold down a key long enough to start the keyboard's repeat feature, the system sends multiple key-down messages, followed by a single key-up message. In all four of the keyboard messages discussed so far, the wParam parameter contains the virtual-key code of the key.
The lParam parameter contains some miscellaneous information packed into 32 bits. You typically do not need the information in lParam. One flag that might be useful is bit 30, the "previous key state" flag, which is set to 1 for repeated key-down messages.Hi, I want to ask a question on function callback.
How does your rendering loop with OpenCV looks like? Please post some code with proper code blocks, and keep it small. You decide when to render stuff. If you need to better balance CPU between programs, add some sleep time inside the loop. Not sure how that fits with all your cvWaitKey. Why do you have a separate program for hand detection? It would be easier to have a simple program doing both tasks, no?
About the blinking, try to simplify your program to a minimal code, you will see what is the source of the blinking. Do you request a double buffered window? You should. I think I really need your consultation on this graphic programming…. No thanks.
There a button for that! I am not drawing GL and CV in one window, they are in different window actually. GL is for the game and CV is just to display the image detected by webcam. Flicker is because you swapbuffers twice for each frame. Remove the one which is in Setup2DOrthoSpace. For the depth buffer, just ask for 24 bits of depth buffer in the create window, then clear depth any time you need it, ie.
It looks you do not really understand what you are doing. To properly troubleshoot, try to simplify to the maximum the code, so that no doubt is left to where is the problem.
Add printf traces inside your tests for xPos, and do not forget to add an else for all others cases, to really see what happens. Print the xPos value as well. Is is intended that that exact value will not pass in any of your current test branches? Displaying text in OpenGL is not straightforward. I would suggest if it is enough for you, keep the glut method just for displaying text unless you absolutely want to not link with glut. Otherwise there are various libs and tools available to help in the domain of text rendering in OpenGL.
Idle and display callbacks are not needed, as you simply call your code in sequence. Not sure how that fits with all your cvWaitKey Why do you have a separate program for hand detection? Hi Zbuffer… can I email you my code? For the blinking problem : what is in initializeGLFW? You must not do that. If you use GL, use only that to draw. Just upload cv image data to a gl texture, and draw a textured quad with it.GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. This is definitely a hole in the API. Instead, I can add queries for lock key states and you can choose the behavior of the key based on the Num Lock state.
Would that be sufficient for your purposes? Being able to query num lock state is certainly a first step, however, it is a hack -- since the behavior of num lock is configurable at the OS level, and applications should follow the OS as much as possible.
Otherwise, glfw based applications will behave differently than all other applications on systems where the behavior of num lock has been changed. This will not break existing applications, which could continue to use the old API.
The new API could either use a new callback function or a switch that changes the behavior of the existing one at runtime. Yup, it won't work on systems with home-made keyboard layouts. Normally I'd argue that this is extremely rare, but you're writing a terminal emulator so that probably isn't true for your users. I won't add another key callback but once it's time for 4. For now, with many higher priority features still to be implemented, lock key state is what I can offer.
Either solution would be useful. I'm currently hacking around this by using a Windows system call. I vote for option 1 on the grounds that it is less likely to cause compatibility issues with code that checks the masks incorrectly. The modifier bit path was so much cleaner internally and conceptually simpler externally no potentially out-of-date cached state that I had to give it a try. What do you think of f3de10d?
Subscribe to RSS
This is how most DAWs do it. Much thanks, and good API choice! AndrewBelt Good to know, thank you! AngelDeaD Sort of. Having actual separate symbols for the different uses of the same physical keys has to wait until 4.
Skip to content. Dismiss Join GitHub today GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. This is by design. The key callback deals with physical keys and names them according to the US layout. Each key token corresponds to a location on the keyboard, not to where if anywhere that symbol is placed by the current layout. Is glfwGetKeyText described anywhere? I am unable to see a problem from what has been described in this issue so far, can you please elaborate on what you're trying to achieve andrewrk?
It returns a UTF-8 encoded string of what the specified printable key produces with the current keyboard layout with no modifier keys used. This lets the application explain key bindings to users. For non-printable keys, there's a choice to be made because Windows provides localized strings for these, Xkb can probably be coaxed to provide English language ones and OS X doesn't provide anything for them. There is now code sane enough for testing in the keyname branch. I tested this with Xfce and X11 just now.
It's looking good and it will solve one bug that I have.
However, I still have issue The events for that key with no modifiers look like this. The expected value for the key is "Home".
When NumLock is off, that key is supposed to act as Home key. With NumLock on, it is supposed to be key pad 7. NumLock off behavior is incorrect; NumLock on behavior is correct. The character event is unexpected.
This might be a separate issue. I also noticed that, [and ] all produced character events in addition to key events, same as period, when pressed with Control.Hi, I have meat a problem. After a shot study, I copied the example code and built develop everiment. I use static link to glfw3. I was able to generate exe and run it. I think I must have missed some lib, but I don't know which I missed. Here is my code:. Hi, I have searched the link you presented.
I got the link error as well after I've linked libEGL. Thank you all the same. I will be searhing how to develop Opengl ES 3. It seems like I had linked wrong lib. I will be testing tomorrow to see whether I can run Opengl ES3. Glad to hear you're making progress. If you succeed and get the time to write up the configuration you used that could help future developers.
I have met a new problem. For such issue its even hard to search it. I have spent nearly all day to solve this, but failed. And I have been trying compile the source code to get a right lib. I think I have to create a new thread to describe my problem.
I have met a lot problem If it's 1. Thanks for your help. Here you link to OpenGL Hi, I don't know which version libEGL. I have updated my libEGL.
It means glCreateShader failed I think. Note: The access violation you're getting may be because you can't create a 3. So you can try to create a 2. I have got a new trail.Hi, I am new to opengl, and I need some help with how to get keyboard and mouse input. Please somebody help. How about using the keyboard as user input to manipulate shapes in the program?
Whenever I use glutKeyboardFunc or glutSpecialFunc to do this, I get jumpy movement as these functions only call when a key is struck or when the key repeats when it is held for a while. How do I get fluid movement out of opengl when reading from the keyboard? Use flags to determine wether a key is pressed or not, and use the keyboard function to set the flags. Originally posted by vgm2: Hi, I am new to opengl, and I need some help with how to get keyboard and mouse input.
Thanks for your reply. I would like to know if the MenuHandler function arguments are the asci values of the characters. If not could you please tell me where I can get those value? Hi again, I think I asked the wrong question. Please if there is a way, can someone tell me? Thanks for your time. Originally posted by Hermann: One question fist: what are you using? GLUT, win32, linux? Thanks Thanks for your reply. One question fist: what are you using? Hi, Thanks for your reply, I am using Win