перетаскивание изображений с помощью OpenGL Stack Overflow

я хочу создать игру, похожую на эту http://www.sciencekids.co.nz/gamesactivities/movinggrowing.html

1-как переместить изображение по координатам от мыши? я знаю, как перевести объект, который я дроу, как многоугольник, но не изображения?

2- как проверить, находится ли он в правильном plce и сделать это там
я использовал gltranslate, но изображение не двигалось, и попытался copypixl, но он продолжал копировать изображение
везде, где мышь попадает.

 #include <windows.h>
#include <GL/glut.h>
#include <gl/glaux.h>

#pragma comment(lib,"glaux.lib")

AUX_RGBImageRec *image ;
GLsizei wh = 600, ww = 800;
//-----------------------------------------------------------------------------------------------
void display(void){

image = new AUX_RGBImageRec();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
image = auxDIBImageLoad(L"boy.bmp");
glDrawPixels(image->sizeX, image->sizeY, GL_RGB,
GL_UNSIGNED_BYTE,image->data);

glFlush();
}
//-----------------------------------------------------------------------------------------------
void mouse (int btn , int state , int x , int y){

int h = wh-y ;
if(btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN){

/*glPushMatrix();*/
/*glTranslatef(x , h , 0);*/
glRasterPos2i(x,h);
glCopyPixels(0,0,image->sizeX, image->sizeY,GL_COLOR);
//glPopMatrix();}
if(btn == GLUT_LEFT_BUTTON && state == GLUT_UP) {

// check if it is in right place to stuck it else will retuen to original place
}
}glFlush();

}
//-----------------------------------------------------------------------------------------------
void intiate(){

glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluOrtho2D(0,ww,0,wh);
}
//-----------------------------------------------------------------------------------------------
void main()
{
glutInitDisplayMode (GLUT_RGB);
glutInitWindowSize (ww, wh);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Inside my Body");
intiate();
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}

0

Решение

1-как переместить изображение по координатам от мыши? я знаю, как перевести объект, который я дроу, как многоугольник, но не изображения?

Прежде всего: пожалуйста, не используйте glDrawPixels. Вместо этого используйте текстуры, примененные к обычной геометрии. OpenGL не имеет дело с пользовательским вводом, так что вам придется самостоятельно реализовывать взаимодействие с мышью. Никогда Поместите команды рисования OpenGL во входной обработчик событий. В обработчике входных событий измените некоторые переменные, установите флаги и т. Д., Но не рисуйте. С установленными флагами выполните перерисовку, чтобы вы могли рисовать обновления.

2- как проверить, находится ли он в правильном plce и сделать это там

OpenGL — это API рисования, а не граф сцены. Вы говорите, что рисовать и все. Если вещи выглядят не так, как вы ожидаете, значит, вы неправильно их рисуете.

Pro-Tip: Поместите все команды OpenGL в процедуру рисования. Не вызывайте никаких функций OpenGL из других источников. То, что вы делаете в своем initiate функция на самом деле принадлежит функции отображения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]