配列 16進数 | ピクセル |
---|---|
8A 5F 6A DF 55 DF 55 5F |
■□□□■□■□ □■□■■■■■ □■■□■□■□ ■■□■■■■■ □■□■□■□■ ■■□■■■■■ □■□■□■□■ □■□■■■■■ |
void glRasterPos2d(GLdouble x , GLdouble y); void glRasterPos2f(GLfloat x , GLfloat y); void glRasterPos2i(GLint x , GLint y); void glRasterPos2s(GLshort x , GLshort y); void glRasterPos3d( GLdouble x , GLdouble y , GLdouble z ); void glRasterPos3f( GLfloat x , GLfloat y , GLfloat z ); void glRasterPos3i( GLint x , GLint y , GLint z ); void glRasterPos3s( GLshort x , GLshort y , GLshort z ); void glRasterPos4d( GLdouble x , GLdouble y , GLdouble z , GLdouble w ); void glRasterPos4f( GLfloat x , GLfloat y , GLfloat z , GLfloat w ); void glRasterPos4i( GLint x , GLint y , GLint z , GLint w ); void glRasterPos4s( GLshort x , GLshort y , GLshort z , GLshort w ); void glRasterPos2dv(const GLdouble *v); void glRasterPos2fv(const GLfloat *v); void glRasterPos2iv(const GLint *v); void glRasterPos2sv(const GLshort *v); void glRasterPos3dv(const GLdouble *v); void glRasterPos3fv(const GLfloat *v); void glRasterPos3iv(const GLint *v); void glRasterPos3sv(const GLshort *v); void glRasterPos4dv(const GLdouble *v); void glRasterPos4fv(const GLfloat *v); void glRasterPos4iv(const GLint *v); void glRasterPos4sv(const GLshort *v);x、y、z、w には、ラスタ位置の新しい座標を指定します
void glBitmap( GLsizei width , GLsizei height , GLfloat xorig , GLfloat yorig , GLfloat xmove , GLfloat ymove , const GLubyte * bitmap );width にはビットマップの幅、height には高さをピクセル単位で指定します
#include <windows.h> #include <GL/gl.h> #include <GL/glut.h> const GLubyte bits[] = { 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , }; void disp( void ) { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(-1 , -1); glBitmap(64 , 16 , 0 , 0 , 0 , 0 , bits); glFlush(); } int main(int argc , char ** argv) { glutInit(&argc , argv); glutInitWindowSize(400 , 300); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH); glutCreateWindow("Kitty on your lap"); glutDisplayFunc(disp); glClearColor(1 , 1 , 1 , 0); glColor3f(0 , 0 , 0); glutMainLoop(); return 0; }
#include <windows.h> #include <stdio.h> #include <GL/gl.h> #include <GL/glut.h> GLubyte * bits; GLuint width , height; void disp( void ) { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(-1 , -1); glBitmap(width , height , 0 , 0 , 0 , 0 , bits); glFlush(); } int main(int argc , char ** argv) { FILE *stream; if (argc < 2) { printf("exeFileName bitmap\n"); return 0; } stream = fopen(argv[1] , "rb"); if (stream == NULL) { printf("stream did not open.\n"); return 0; } fseek(stream , 0x12 , SEEK_SET); fread(&width , 4 , 1 , stream); fread(&height , 4 , 1 , stream); bits = malloc(width * height); fseek(stream , 0x3E , SEEK_SET); fread(bits , 1 , width * height , stream); fclose(stream); glutInit(&argc , argv); glutInitWindowSize(width , height); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH); glutCreateWindow("Kitty on your lap"); glutDisplayFunc(disp); glClearColor(1 , 1 , 1 , 0); glColor3f(0 , 0 , 0); glutMainLoop(); free(bits); return 0; }