#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
#pragma comment(lib,"winmm.lib")
#include <windows.h>
#include <mmsystem.h>
#include <GL/freeglut/freeglut.h>
#define WIDTH 320
#define HEIGHT 240
int x=150,y=80;
void SquareFill2D(int x1,int y1,int x2, int y2){
glBegin(GL_QUADS);
glVertex2i(x1,y1);
glVertex2i(x2,y1);
glVertex2i(x2,y2);
glVertex2i(x1,y2);
glEnd();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(1.0f,0.5f,0.0f,1.0f);
SquareFill2D(x,y,x+50,y+50);
glutSwapBuffers();
}
void idle(void)
{
JOYINFOEX JOYPAD;
JOYPAD.dwSize = sizeof(JOYINFOEX);
JOYPAD.dwFlags = JOY_RETURNALL; // 全ての情報を取得
if(joyGetPosEx(JOYSTICKID1, &JOYPAD) == JOYERR_NOERROR){ // 成功
if(JOYPAD.dwXpos > 0x7FFF + 0x4000) x+=2;
if(JOYPAD.dwXpos < 0x7FFF - 0x4000) x-=2;
if(JOYPAD.dwYpos > 0x7FFF + 0x4000) y+=2;
if(JOYPAD.dwYpos < 0x7FFF - 0x4000) y-=2;
//ボタン32個まで 空制御 コピペ用
if(JOYPAD.dwButtons & JOY_BUTTON1);
if(JOYPAD.dwButtons & JOY_BUTTON2);
}
Sleep(1);
glutPostRedisplay();
}
void Init(){
glClearColor(1.0, 1.0, 1.0, 1.0);
glOrtho(0, WIDTH, HEIGHT, 0, -1, 1);
}
int main(int argc, char *argv[])
{
glutInitWindowPosition(100, 100);
glutInitWindowSize(WIDTH, HEIGHT);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow("ジョイパッド");
glutDisplayFunc(display);
glutIdleFunc(idle);
Init();
glutMainLoop();
return 0;
}
|