質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

600閲覧

openglのキーボード操作

ssssssa

総合スコア4

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/06/24 07:23

この花火の写真付きテクスチャをキーボードAを押したら消えたり、表示したりしたいです。
この場合はどこに何を追加したらいいでしょうか。

#include <stdlib.h> #include "GL/glut.h" #include <GL/gl.h> #include <GL/glu.h> #include <math.h> #include <stdio.h> #include "read_bitmap.h" #define KEY_ESC 27 #define imageWidth 8 #define imageHeight 8 int ReadBitMapData(); void polarview( void ); void resetview( void ); unsigned char image1[imageHeight][imageWidth][4]; unsigned char image2[imageHeight][imageWidth][4]; int xBegin = 0, yBegin = 0; int mButton; float distance, twist, elevation, azimuth; float nearw = 1.0, farw = 30.0, fovy = 60.0; void initTexture(void); void display(void) { float diffuse[] = { 0.0, 0.0, 1.0, 1.0 }; float specular[] = { 1.0, 1.0, 1.0, 1.0 }; float ambient[] = { 0.1, 0.1, 0.1, 1.0 }; glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); polarview(); glEnable( GL_DEPTH_TEST ); glEnable(GL_TEXTURE_2D); glMaterialfv( GL_FRONT, GL_DIFFUSE, diffuse ); glMaterialfv( GL_FRONT, GL_SPECULAR, specular ); glMaterialfv( GL_FRONT, GL_AMBIENT, ambient ); glMaterialf( GL_FRONT, GL_SHININESS, 128.0 ); glEnable( GL_LIGHTING ); glBindTexture(GL_TEXTURE_2D,3); glBegin(GL_QUADS); glTexCoord2f(0.0,0.0); glVertex3f(-1.0,-1.0,0.5); glTexCoord2f(0.0,1.0); glVertex3f(-1.0,1.0,0.5); glTexCoord2f(1.0,1.0); glVertex3f(1.0,1.0,0.5); glTexCoord2f(1.0,0.0); glVertex3f(1.0,-1.0,0.5); glEnd(); glDisable(GL_TEXTURE_2D); glPopMatrix(); glDisable( GL_LIGHTING ); glDisable( GL_DEPTH_TEST ); glutSwapBuffers(); } void myKbd(unsigned char key, int x, int y) { case KEY_ESC: exit( 0 ); default: break; } } unsigned char bitmap1[imageHeight][imageWidth]= { {0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00}, {0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00}, {0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00}, {0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00}, {0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}, {0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}, {0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}, {0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff} }; unsigned char bitmap2[imageHeight][imageWidth]= { {0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00}, {0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00}, {0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00}, {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, {0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00}, {0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00}, {0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00} }; void makeImage1(void) { int i, j, c; for (i = 0; i < imageHeight; i++) { for (j = 0; j < imageWidth; j++) { c = bitmap1[i][j]; image1[i][j][0] = (unsigned char) c; image1[i][j][1] = (unsigned char) c; image1[i][j][2] = (unsigned char) c; image1[i][j][3] = (unsigned char) 128; } } } void makeImage2(void) { int i, j, c; for (i = 0; i < imageHeight; i++) { for (j = 0; j < imageWidth; j++) { c = bitmap2[i][j]; image2[i][j][0] = (unsigned char) c; image2[i][j][1] = (unsigned char) 0; image2[i][j][2] = (unsigned char) 0; image2[i][j][3] = (unsigned char) 128; } } } void initTexture3( void) { unsigned char *image3[1]; int imageHeightb, imageWidthb; if(!ReadBitMapData("hanabi.bmp",&imageWidthb,&imageHeightb,image3)){ printf("Error! \n"); exit(0); } glBindTexture(GL_TEXTURE_2D,3); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, 4,imageWidthb ,imageHeightb,0, GL_RGBA, GL_UNSIGNED_BYTE, *image3); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); } void myInit (char *progname) { glutInitWindowPosition(0, 0); glutInitWindowSize( 400, 400); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); glutCreateWindow(progname); glClearColor (0.0, 0.0, 0.0, 1.0); glutKeyboardFunc(myKbd); resetview(); initTexture3(); glShadeModel( GL_SMOOTH ); glEnable( GL_LIGHT0 ); } void myReshape(int width, int height) { float aspect = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(fovy, aspect, nearw, farw); glMatrixMode(GL_MODELVIEW); } void polarview( void ) { glTranslatef( 0.0, 0.0, -distance); glRotatef( -twist, 0.0, 0.0, 1.0); glRotatef( -elevation, 1.0, 0.0, 0.0); glRotatef( -azimuth, 0.0, 1.0, 0.0); } void resetview( void ) { distance = 3.0; twist = 0.0; elevation = -30.0; azimuth = 30.0; } void myMouse( int button, int state, int x, int y ) { if( state == GLUT_DOWN) { mButton = button; xBegin = x; yBegin = y; } } void myMotion(int x, int y) { int xDisp, yDisp; xDisp = x - xBegin; yDisp = y - yBegin; switch(mButton){ case GLUT_LEFT_BUTTON: azimuth += (float) xDisp/2.0; elevation -= (float) yDisp/2.0; break; case GLUT_MIDDLE_BUTTON: twist = fmod (twist + xDisp, 360.0); break; case GLUT_RIGHT_BUTTON: distance -= (float) yDisp/40.0; break; } xBegin = x; yBegin = y; glutPostRedisplay(); } void main(int argc, char** argv) { glutInit(&argc, argv); myInit(argv[0]); glutReshapeFunc (myReshape); glutDisplayFunc(display); glutMouseFunc(myMouse); glutMotionFunc( myMotion ); glutMainLoop(); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2020/06/24 08:17

> glEnable(GL_TEXTURE_2D); この行が無い場合はどのような表示結果になりますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問