Суть такая, размер окна 480x480... значит проблема в оси Y "высота" там где сейчас находится курсор, мышь регистрирует как нижняя точка, то есть 0, хотя по координатам окна там 480, верхняя точка! На скрине видно, консоль что с низу показывает координаты мыши! а в массиве можно увидеть координаты куба, что там указано 480... проще говоря координаты мыши перевернуты верх ногами! Как повернуть координаты мыши? ну или хотя бы окна? по оси Y что бы они совпадали! код:
static void cursorPositionCallback (GLFWwindow *window, double xPos, double yPos); void cursorEnterCallback (GLFWwindow *window, int entered); void mouseButtonCallback (GLFWwindow *window, int button, int action, int mods); void scrollCallback (GLFWwindow *window, double xOffset, double yOffset);
код:
static void cursorPositionCallback (GLFWwindow *window, double xPos, double yPos);
void cursorEnterCallback (GLFWwindow *window, int entered);
void mouseButtonCallback (GLFWwindow *window, int button, int action, int mods);
void scrollCallback (GLFWwindow *window, double xOffset, double yOffset);
float cube1 [] {
200, 480, 0,
300, 480, 0,
300, 200, 0,
200, 200, 0
};
void keyCallback (GLFWwindow *window, int key, int scancode, int action, int mods);
int SCREEN_WIDTH = 480;
int SCREEN_HEIGHT = 480;
void windowsResize(GLFWwindow *window,int W,int H)
{
SCREEN_WIDTH = W;
SCREEN_HEIGHT = H;
}
int main (void) {
GLFWwindow *window;
if (!glfwInit() ) {
return -1;
}
window = glfwCreateWindow ( SCREEN_WIDTH, SCREEN_HEIGHT , "Танчики", NULL, NULL);
glfwSetKeyCallback (window, keyCallback );
glfwSetCursorPosCallback (window,cursorPositionCallback);
glfwSetInputMode (window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
glfwSetCursorEnterCallback (window, cursorEnterCallback);
glfwSetMouseButtonCallback (window, mouseButtonCallback);
glfwSetScrollCallback (window, scrollCallback);
if ( !window ) {
glfwTerminate ();
return - 1;
}
glfwMakeContextCurrent ( window );
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 0, 1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
void glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far);
while ( !glfwWindowShouldClose (window))
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glEnableClientState ( GL_VERTEX_ARRAY );
glVertexPointer(3, GL_FLOAT, 0, cube1);
glDrawArrays (GL_POLYGON, 0, 4);
glDisableClientState (GL_VERTEX_ARRAY);
glEnd();
glfwSwapBuffers (window);
glfwPollEvents();
}
glfwTerminate ();
return 0;
}
static void cursorPositionCallback (GLFWwindow *window, double xPos, double yPos) {
cout<<yPos<<"\r\n";
}