OpenGL (590レス)
OpenGL http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
262: 名前は開発中のものです。 [sage] 2005/10/09(日) 04:07:25 ID:qOVsvncy SDLとOpenGLの勉強を先日から初めて、とりあえずテクスチャを貼り付けてみようと思いました。 が、なかなかうまくいきません。 以下少し長いですがソースを貼り付けてみますので、おかしい点があれば 教えていただけないでしょうか? /* テクスチャの練習 */ #include <windows.h> #include <gl/gl.h> #include <gl/glu.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <stdio.h> #include <stdlib.h> GLuint texName; static void process_events(void) { SDL_Event event; /* この中でやってきたイベントごとの処理を書く */ while(SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: exit(0); } } } http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/262
263: 名前は開発中のものです。 [sage] 2005/10/09(日) 04:12:43 ID:qOVsvncy static void draw_screen(void) { static GLfloat v0[] = { -1.0f, -1.0f, 1.0f }; static GLfloat v1[] = { 1.0f, -1.0f, 1.0f }; static GLfloat v2[] = { 1.0f, 1.0f, 1.0f }; static GLfloat v3[] = { -1.0f, 1.0f, 1.0f }; glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -5, 5, 0, 0, 0, 0, 0, 10); /* 何番のテクスチャを使うか */ glBindTexture(GL_TEXTURE_2D, texName); /* 四角形を表示 */ glBegin(GL_QUADS); glTexCoord2f(0,0);glVertex3fv(v0); glTexCoord2f(1,0);glVertex3fv(v1); glTexCoord2f(1,1);glVertex3fv(v2); glTexCoord2f(0,1);glVertex3fv(v3); glEnd(); /* フロントバッファとバックバッファの交換 */ SDL_GL_SwapBuffers(); } http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/263
264: 名前は開発中のものです。 [sage] 2005/10/09(日) 04:14:06 ID:qOVsvncy static void setup_opengl(int width, int height) { float ratio = (float) width / (float) height; SDL_Surface *image; /* テクスチャ用画像 */ SDL_Surface *tmpImage; /* 消去時の色を黒にセット */ glClearColor(0, 0, 0, 0); /* ビューポートをウィンドウサイズに設定 */ glViewport(0, 0, width, height); /* 射影変換(縦の視野角が60.0度、横の視野角は縦横比があうように設定) */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, ratio, 1.0, 1024.0); /* テクスチャ用画像読み込み */ image = IMG_Load("tile.png"); if(!image) exit(-1); tmpImage = SDL_CreateRGBSurface(SDL_SWSURFACE,0,0,32, 0x000000ff,0x0000ff00,0x00ff0000,0xff000000); image = SDL_ConvertSurface(image, tmpImage->format, SDL_SWSURFACE); SDL_FreeSurface(tmpImage); /* テクスチャの設定 */ glEnable(GL_TEXTURE_2D); glGenTextures(1, &texName); /* 識別用コードの取得(再利用時に必要) */ glBindTexture(GL_TEXTURE_2D, texName); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels); SDL_FreeSurface(image); /* テクスチャに転送した時点で必要なし */ } http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/264
265: 名前は開発中のものです。 [sage] 2005/10/09(日) 04:14:58 ID:qOVsvncy int main(int argc, char *argv[]) { const SDL_VideoInfo *info; /* ビデオ情報格納用 */ int width, height; /* ウィンドウサイズ */ int bpp; /* 色深度 */ /* SDLの初期化 */ if(SDL_Init(SDL_INIT_VIDEO) < 0){ fprintf(stderr, "SDLの初期化に失敗しました: %s\n", SDL_GetError()); return -1; } /* 強制終了時SDLの後片付けを忘れないために */ atexit(SDL_Quit); /* ここからウィンドウ作成のためのあれこれ */ /* ビデオ情報の取得 */ info = SDL_GetVideoInfo(); if(!info){ fprintf(stderr, "ビデオ情報の取得に失敗しました: %s\n", SDL_GetError()); exit(-1); } /* ウィンドウサイズと色深度の指定 */ width = 640; height = 480; bpp = info->vfmt->BitsPerPixel; http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/265
266: 名前は開発中のものです。 [sage] 2005/10/09(日) 04:16:33 ID:qOVsvncy /* OpenGL用の属性を指定 */ SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); /* ビデオモードの設定 最後の引数がSDL_OPENGLであることに注意 */ if(SDL_SetVideoMode(width, height, bpp, SDL_OPENGL) == 0){ fprintf(stderr, "ビデオモードの設定に失敗しました: %s\n", SDL_GetError()); exit(-1); } /* OpenGL用の細かい初期設定はこの関数の中で */ setup_opengl(width, height); /* メインループ */ while(1){ /* イベントを処理 */ process_events(); /* 画面を表示 */ draw_screen(); } } http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/266
267: 名前は開発中のものです。 [sage] 2005/10/09(日) 08:57:23 ID:qOVsvncy 以上です。 tile.pngは一色に塗りつぶした24*24の24bitカラーの画像です。 とりあえず斜め上から見下ろした白い面なら見えるのですが……。 http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/267
269: 名前は開発中のものです。 [sage] 2005/10/09(日) 12:05:18 ID:qOVsvncy >>268 ご親切にありがとうございます。 原因は24を2のn乗であらわせると思い込んでたことでした。 お恥ずかしい限りです。 http://mevius.5ch.net/test/read.cgi/gamedev/1005834875/269
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s