LINUX.ORG.RU

Графический планшет Wacom + glutTabletMotionFunc (OpenGL, GLUT)


0

1

Как в OpenGL-приложении правильно принимать события от графического планшета? Функция funcTabletMotion, похоже, не получает их:

void funcTabletMotion(int x, int y) {
  printf("%d %d\n", x, y);
}

Если я сделаю OpenGL-канву - частью GTK- или Qt- приложения, то с обработкой событий от клавиатуры/планшета станет легче?

★★★★★

исходник для проверки событий от планшета:

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>

#define WINDOW_POS_X 0
#define WINDOW_POS_Y 0
#define WINDOW_WIDTH 1600
#define WINDOW_HEIGHT 1200

void funcReshapeWindow (int w, int h) {
  // loading coordinate system
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D (0, WINDOW_WIDTH, 0, WINDOW_HEIGHT);
  glViewport (0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
  glMatrixMode (GL_MODELVIEW);
  glLoadIdentity();
}

void funcDrawWindow() {
  // clear window
  glClearColor(0.0, 0.0, 0.0, 1.0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glutSwapBuffers();
}

void funcKeyboard(unsigned char k, int x, int y) {
  switch(k) {
    case 0x1B : exit(0);
    default : {
      printf("0x%02X 0x%04X\n", k, glutGetModifiers());
      break;
    }
  }
}

void funcSpecial(int k, int x, int y) {
  printf("0x%04X 0x%04X\n", k, glutGetModifiers());
}

void funcTabletMotion(int x, int y) {
  printf("%d %d\n", x, y);
}

void funcTabletButton(int button, int state, int x, int y) {
  printf("%d %d\n", x, y);
}

int main (int argc, char **argv) {

  setlocale(LC_CTYPE, "ru_RU.UTF-8");

  // (init GLUT)
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_ALPHA | GLUT_MULTISAMPLE);

  // (create window)
  glutInitWindowPosition(WINDOW_POS_X, WINDOW_POS_Y);
  glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
  glutCreateWindow("glutwacom");

  // (set event-handlers)
  glutDisplayFunc(funcDrawWindow);
  glutReshapeFunc(funcReshapeWindow);
  glutKeyboardFunc(funcKeyboard);
  glutSpecialFunc(funcSpecial);
  glutTabletMotionFunc(funcTabletMotion);
  glutTabletButtonFunc(funcTabletButton);

  glutMainLoop();

  return 0;
}
Makefile:
NAME=glutwacom

CC=g++
OPTS=-Wall -O3 -arch=native
LIBS=-lGL -lGLU -lglut
INCS=

${NAME}:        ${NAME}.cpp
                ${CC} ${INCS} -c -o ${NAME}.o ${NAME}.cpp
                ${CC} -o ${NAME} ${NAME}.o ${LIBS}
                strip --strip-all ${NAME}

pacify ★★★★★
() автор топика

Да блин, как бы тебе этот глут не нравился( хотя непонятно что в нём может нравиться ) — это устаревшее говно, смирись с этим, выкинь его, а в место него подбери СДЛ, который ты выкинул прежде.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

SDL+Wacom+ru_RU.UTF-8 locale

а в место него подбери СДЛ, который ты выкинул прежде.

Сейчас попробую что-нибудь написать на SDL.

Похоже, графический планшет Wacom им поддерживается:
http://lists.libsdl.org/pipermail/commits-libsdl.org/2010-August/003227.html

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.