前回作ったライブラリを実際に使ってみた
簡単なサンプルを作ってみました。
↓ライブラリ紹介エントリ
http://blogs.yahoo.co.jp/mocchi_2003/38911375.html
テクスチャのサイズが2のn乗になっていないので、OpenGLのバージョンが古い環境では
動かないかもしれません。
#include <cstdio>
#include <cmath>
#include <GL/freeglut.h>
#include "font_renderer.h"
#define HEIGHT 300
int width, height;
double rad = 0.0, scale = 1.0;
font_renderer fl;
GLuint fonttex;
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble)width, (GLdouble)height, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glPushMatrix();
glColor3d(1.0, 1.0, 1.0);
glTranslated*1;
glGenTextures(1, &fonttex);
glBindTexture(GL_TEXTURE_2D, fonttex);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB8, fl.get_width(), fl.get_height(), GL_RGB, GL_UNSIGNED_BYTE, fl.get_image());
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
window = glutCreateWindow("Hello" );
init();
glutMainLoop();
glDeleteTextures(1 , &fonttex);
関連
- font_rendererバージョンアップ
- 前回作ったライブラリを実際に使ってみた
- ネイティブAPIを用いたマルチプラットフォームフォントレンダラーライブラリ
*1:GLdouble)(width/2), (GLdouble)(height/2), 0.0);
glScaled(scale, scale, 0.0);
glBindTexture(GL_TEXTURE_2D, fonttex);
glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0); glVertex2i(-fl.get_width()/4, -fl.get_height()/4);
glTexCoord2d(0.0, 1.0); glVertex2i(-fl.get_width()/4, fl.get_height()/4);
glTexCoord2d(1.0, 1.0); glVertex2i( fl.get_width()/4, fl.get_height()/4);
glTexCoord2d(1.0, 0.0); glVertex2i( fl.get_width()/4, -fl.get_height()/4);
glEnd();
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glPushMatrix();
glColor3d(1.0, 1.0, 0.6);
glTranslated((GLdouble)WIDTH/2.0,(GLdouble)HEIGHT/2.0,0.0);
glRotated(rad, 0.0, 0.0, 1.0);
glTranslated(-(GLdouble)WIDTH/2.0,-(GLdouble)HEIGHT/2.0,0.0);
glBegin(GL_TRIANGLES);
glVertex2d(150.0, 0.0);
glVertex2d(0.0, 280.0);
glVertex2d(280.0, 280.0);
glEnd();
glPopMatrix();
}
display_3d();
display_2d();
glutSwapBuffers();
glViewport(0, 0, width, height);
display();
rad += 5.0;
scale = 2.0 + std::sin(rad/180.0 * 3.14159265358979);
display();
glutTimerFunc(10, timer, 0);
if (texsize < height) texsize = height;
if (texsize > 0) --texsize;
while(texsize){
++scale;
width = height = (1 << scale);
glEnable(GL_DEPTH_TEST);
glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutTimerFunc(10, timer, 0);
fl.render("☆OpenGLテスト★", 80, false, false, false,