約 2,447,337 件
https://w.atwiki.jp/free_material/pages/22.html
鯉を描くなら鯉を買 GarakutaCG K_Nine ACCUEIL 3D TEXTURES The 3D Studio NOCTUA Graphics
https://w.atwiki.jp/opengl/pages/188.html
GLSLでテクスチャを描画します。 vertex.shader //フラグメントシェーダーに渡す変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル void main(void) { P = vec3(gl_ModelViewMatrix * gl_Vertex); N = normalize(gl_NormalMatrix * gl_Normal).xyz; gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); } flagment.shader //頂点シェーダーから受け取る変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル uniform sampler2D sampler; void main(void) { vec3 L = normalize(gl_LightSource[0].position.xyz - P);//光源ベクトル N = normalize(N); vec4 ambient = gl_FrontLightProduct[0].ambient; float dotNL = dot(N, L);//max(0.0, dot(N, L)); vec4 diffuse = gl_FrontLightProduct[0].diffuse * max(0.0, dotNL); vec3 V = normalize(-P); vec3 H = normalize(L + V); float powNH = pow(max(dot(N, H), 0.0), gl_FrontMaterial.shininess); if(dotNL = 0.0) powNH = 0.0; vec4 specular = gl_FrontLightProduct[0].specular * powNH; //テクスチャの色 vec4 texColor = texture2D(sampler, gl_TexCoord[0].st); //GL_MODULATEモード gl_FragColor = (ambient + diffuse) * texColor + specular; } GLSL.h #pragma once #include stdio.h //GLSLクラス class GLSL{ public GLuint ShaderProg; GLuint VertexShader, FragmentShader; void ReadShaderCompile(GLuint Shader, const char *File);//shader fileを読み込みコンパイルする void Link( GLuint Prog );//リンクする void InitGLSL(const char *VertexFile);//GLSLの初期化 void InitGLSL(const char *VertexFile, const char *FragmentFile);//GLSLの初期化 void ON();//シェーダー描画に切り替え void OFF();//シェーダー解除 ~GLSL(); }; void GLSL ReadShaderCompile(GLuint Shader, const char *File){ FILE *fp; char *buf; GLsizei size, len; GLint compiled; fopen_s( fp,File, rb ); if(!fp) printf( ファイルを開くことができません %s\n , File); fseek(fp, 0, SEEK_END); size = ftell(fp); buf = (GLchar *)malloc(size); if (buf == NULL) { printf( メモリが確保できませんでした \n ); } fseek(fp, 0, SEEK_SET); fread(buf, 1, size, fp); glShaderSource(Shader, 1, (const GLchar **) buf, size); free(buf); fclose(fp); glCompileShader(Shader); glGetShaderiv( Shader, GL_COMPILE_STATUS, compiled ); if ( compiled == GL_FALSE ) { printf( コンパイルできませんでした!! %s \n , File); glGetProgramiv( Shader, GL_INFO_LOG_LENGTH, size ); if ( size 0 ) { buf = (char *)malloc(size); glGetShaderInfoLog( Shader, size, len, buf); printf(buf); free(buf); } } } void GLSL Link( GLuint Prog ){ GLsizei size, len; GLint linked; char *infoLog ; glLinkProgram( Prog ); glGetProgramiv( Prog, GL_LINK_STATUS, linked ); if ( linked == GL_FALSE ){ printf( リンクできませんでした!! \n ); glGetProgramiv( Prog, GL_INFO_LOG_LENGTH, size ); if ( size 0 ){ infoLog = (char *)malloc(size); glGetProgramInfoLog( Prog, size, len, infoLog ); printf(infoLog); free(infoLog); } } } void GLSL InitGLSL(const char *VertexFile){ GLenum err = glewInit(); if (err != GLEW_OK) { printf( Error %s\n , glewGetErrorString(err)); } printf( VENDOR= %s \n , glGetString(GL_VENDOR)); printf( GPU= %s \n , glGetString(GL_RENDERER)); printf( OpenGL= %s \n , glGetString(GL_VERSION)); printf( GLSL= %s \n , glGetString(GL_SHADING_LANGUAGE_VERSION)); VertexShader = glCreateShader(GL_VERTEX_SHADER); ReadShaderCompile(VertexShader, VertexFile); ShaderProg = glCreateProgram(); glAttachShader(ShaderProg, VertexShader); glDeleteShader(VertexShader); Link(ShaderProg); } void GLSL InitGLSL(const char *VertexFile, const char *FragmentFile){ GLenum err = glewInit(); if (err != GLEW_OK) { printf( Error %s\n , glewGetErrorString(err)); } printf( VENDOR= %s \n , glGetString(GL_VENDOR)); printf( GPU= %s \n , glGetString(GL_RENDERER)); printf( OpenGL= %s \n , glGetString(GL_VERSION)); printf( GLSL= %s \n , glGetString(GL_SHADING_LANGUAGE_VERSION)); VertexShader = glCreateShader(GL_VERTEX_SHADER); FragmentShader = glCreateShader(GL_FRAGMENT_SHADER); ReadShaderCompile(VertexShader, VertexFile); ReadShaderCompile(FragmentShader, FragmentFile); ShaderProg = glCreateProgram(); glAttachShader(ShaderProg, VertexShader); glAttachShader(ShaderProg, FragmentShader); glDeleteShader(VertexShader); glDeleteShader(FragmentShader); Link(ShaderProg); } void GLSL ON(){ glUseProgram(ShaderProg); } void GLSL OFF(){ glUseProgram(0); } GLSL ~GLSL(){ glDeleteProgram(ShaderProg); } PNG.h #pragma once #include lodepng.h //テクスチャクラス class TEXTURE{ protected LodePNG_Decoder decoder;//デコーダ unsigned char* buffer;//バッファ size_t buffersize, imagesize;//サイズ public TEXTURE(); TEXTURE(const char* FileName);//コンストラクタ void LOAD_PNG(const char* FileName);//PNG読み込み unsigned char* image;//イメージポインタ unsigned int Width,Height;//画像サイズ }; TEXTURE TEXTURE(){ } TEXTURE TEXTURE(const char* FileName){ LOAD_PNG(FileName); } void TEXTURE LOAD_PNG(const char* FileName){ LodePNG_Decoder_init( decoder); //ロード LodePNG_loadFile( buffer, buffersize, FileName); //デコード LodePNG_decode( decoder, image, imagesize, buffer, buffersize); //幅,高さ Width = decoder.infoPng.width;Height = decoder.infoPng.height; } main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, glew32.lib ) #include GL/glew.h #include GL/freeglut/freeglut.h #include GLSL.h #include math.h #include PNG.h #define PAI 3.141592f #define WIDTH 640 #define HEIGHT 480 GLSL glsl; //回転用 float anglex = 0.0f; //ライトの位置 GLfloat lightpos[] = { 10.0f, 15.0f, 0.0f, 1.0f }; float Ambient[] = {1.0f, 1.0f, 1.0f, 1.0f}; float Diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f}; float Specular[]= { 0.4f, 0.4f, 0.4f, 1.0f};//鏡面反射 float AmbientLight[] = { 0.5f, 0.5f, 0.5f, 1.0f}; float DiffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f}; float SpecularLight[] = {1.0f, 1.0f, 1.0f, 1.0f};//鏡面光 float lightDiffuse[4] = {1.0f, 1.0f, 1.0f, 1.0f}; //拡散光 float lightSpecular[4] = {1.0f, 1.0f, 1.0f, 1.0f}; //鏡面光 float pos[] = {0.0f, 2.0f, 0.0f};//位置 bool flag = true; //影のマテリアル float shadowDiffuse[] = {0.0f,0.0f,0.0f,0.3f};//影の拡散光 float shadowSpecular[] = {0.0f,0.0f,0.0f,1.0f};//影の鏡面光 GLuint texID; TEXTURE *texture; void drawTexPlate(float size, int nRepeatS, int nRepeatT){//x-y平面 float sz = 0.5f * size; static float p[4][3] = {//z 上方向 { sz,-sz, 0.0}, { sz, sz, 0.0}, {-sz, sz, 0.0}, {-sz,-sz, 0.0} }; float s = (float)nRepeatS; float t = (float)nRepeatT; glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glNormal3f(0.0, 0.0, 1.0); //z方向の法線 //テクスチャー座標と頂点番号との対応付け glTexCoord2f(0.0, 0.0); glVertex3fv(p[3]); glTexCoord2f( s , 0.0); glVertex3fv(p[0]); glTexCoord2f( s , t ); glVertex3fv(p[1]); glTexCoord2f(0.0, t ); glVertex3fv(p[2]); glEnd(); glDisable(GL_TEXTURE_2D); } void draw(bool flag){ if(flag){ glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,shadowDiffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,shadowSpecular); }else{ glMaterialfv(GL_FRONT,GL_AMBIENT,Ambient); glMaterialfv(GL_FRONT,GL_DIFFUSE,Diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,Specular); glMaterialf(GL_FRONT,GL_SHININESS,100); } glPushMatrix(); glTranslatef(pos[0], pos[1], pos[2]); glRotatef( anglex, 1.0f, 0.0f, 0.0f);//x軸回転 //オブジェクト形状 if(!flag){ drawTexPlate(2.0f,1,1); }else{ drawTexPlate(2.0f,1,1); } glPopMatrix(); } void drawFloor(float widthX, float widthZ, int nx, int nz){ int i, j; //Floor1枚当たりの幅 float wX = widthX / (float)nx; float wZ = widthZ / (float)nz; float diffuse[][4] = { { 0.9f, 0.9f, 0.9f, 1.0f}, { 0.1f, 0.1f, 0.1f, 1.0f} }; float ambient[] = { 0.5f, 0.5f, 0.5f, 1.0f}; float specular[]= { 0.5f, 0.5f, 0.5f, 1.0f}; glMaterialfv(GL_FRONT,GL_AMBIENT,ambient); glMaterialfv(GL_FRONT,GL_SPECULAR,specular); glMaterialf(GL_FRONT,GL_SHININESS,100); glNormal3d(0.0, 1.0, 0.0); glPushMatrix(); for (j = 0; j nz; j++) { float z1 = -widthZ / 2.0f + wZ * j; float z2 = z1 + wZ; for (i = 0; i nx; i++) { float x1 = -widthX / 2.0f + wX * i; float x2 = x1 + wX; glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse[(i + j) 1]); glBegin(GL_QUADS); glVertex3d(x1, 0.0, z1); glVertex3d(x1, 0.0, z2); glVertex3d(x2, 0.0, z2); glVertex3d(x2, 0.0, z1); glEnd(); } } glPopMatrix(); } void CalcShadowMat(float* mat){ float ex, ey, ez;//光源の方向 float s; //object中心から光源までの距離 float x, y, z; x = lightpos[0] - pos[0]; y = lightpos[1] - pos[1]; z = lightpos[2] - pos[2]; //光源の方向ベクトル s = sqrt(x * x + y * y + z * z); ex = x / s; ey = y / s; ez = z / s; //shadow matrix mat[0] = ey; mat[1] = 0.0f; mat[2] = 0.0f; mat[3] = 0.0f; mat[4] = -ex; mat[5] = 0.0f; mat[6] = -ez; mat[7] = 0.0f; mat[8] = 0.0f; mat[9] = 0.0f; mat[10] = ey; mat[11] = 0.0f; mat[12] = 0.0f; mat[13] = 0.001f * ey; mat[14] = 0.0f; mat[15] = ey; } void drawShadow(){ float mat[16]; glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glDepthMask(GL_FALSE); CalcShadowMat( mat); glPushMatrix(); glMultMatrixf(mat); draw(true); glPopMatrix(); glDepthMask(GL_TRUE); glDisable(GL_BLEND); } void setLight(){ glLightfv(GL_LIGHT0, GL_AMBIENT, AmbientLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, DiffuseLight); glLightfv(GL_LIGHT0, GL_SPECULAR, SpecularLight); glLightfv(GL_LIGHT0, GL_POSITION, lightpos); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //視野角,アスペクト比(ウィンドウの幅/高さ),描画する範囲(最も近い距離,最も遠い距離) gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //視点の設定 gluLookAt(0.0,10.0,-10.0, //カメラの座標 0.0,0.0,0.0, // 注視点の座標 0.0,1.0,0.0); // 画面の上方向を指すベクトル //ライトの設定 setLight(); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, texID); glsl.ON(); GLint samplerLoc = glGetUniformLocation(glsl.ShaderProg, sampler ); glUniform1i(samplerLoc, 1);//GL_TEXTURE1を適用 draw(false); glsl.OFF(); drawFloor(10.0, 10.0, 10, 10); drawShadow(); glutSwapBuffers(); } void idle(void){ glutPostRedisplay(); } void Init(){ glsl.InitGLSL( vertex.shader , flagment.shader ); glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_NORMALIZE); //テクスチャー glGenTextures(1, texID);//テクスチャオブジェクトの名前付け texture = new TEXTURE( tip.png ); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); //テクスチャオブジェクトの作成 glBindTexture(GL_TEXTURE_2D, texID); //テクスチャの指定 glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texture- Width,texture- Height,0,GL_RGBA,GL_UNSIGNED_BYTE,texture- image); //テクスチャの繰り返し方法の指定 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);//GL_CLAMP); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);//GL_CLAMP); //テクスチャを拡大・縮小する方法の指定 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);//NEAREST); glBindTexture(GL_TEXTURE_2D, 0); } //タイマー void timer(int value){ anglex+=1.0f; glutTimerFunc(100 , timer , 0); } void main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( テクスチャ ); glutDisplayFunc(display); glutIdleFunc(idle); glutTimerFunc(100 , timer , 0); Init(); glutMainLoop(); return; }
https://w.atwiki.jp/aceshigh/pages/225.html
ビデオメモリーが512MB以上のハイエンド・ビデオ・カードを利用しているのであれば、ハイレゾ・パックをインストールすることで更に綺麗な画面でゲームができます。 ハイレゾ・パック このハイレゾ・パックをインストール後、ビデオ設定画面でテクスチャー・サイズを1024以上にすることで高精細な画面でゲームができます。 ハイレゾ・パックを入れた時と入れない時では、このような違いが生じます。 サンプル テクスチャ・サイズ 2048 1024 512 256 128 あまりテクスチャ・サイズを高くしすぎると、古めのグラフィックカードではフレームレートの確保が困難となるので、最終的には各々のPCスペックにあわせて、見易さとフレームレートとの兼ね合いで決めてください。 今時のグラフィック性能であれば、512~1024位なら問題なく遊ぶ事ができるでしょう。 テクスチャ・サイズの変更方法は、画質の設定を参考にしてください。 ZOTAC GeForce GTX 770 グラフィックスボード デュアルファン搭載 日本正規代理店品 VD5042 ZTGTX770-2GD5R01 GIGABYTE グラフィックボード GEFORCE GTX 770 2GB PCI-Express GV-N770OC-2GD 玄人志向 グラフィックボード GEFORCE GTX 770 2GB PCI-Express GF-GTX770-E2GHD/OC 玄人志向 グラフィックボード GeForce GTX660 2GB OCモデル PCI-E デュアルファン GF-GTX660-E2GHD/DF/OC/A 玄人志向 グラフィックボード Radeon HD7850 2GB PCI-E RH7850-E2GHD/DP
https://w.atwiki.jp/wiki3_sai/pages/11.html
公式サイト SYSTEMAX Software Development 有志によるアップローダー等 SAIうpろだ SAI@WIKIテクスチャ置き場 オススメお役立ちリンク デジタルイラスト・初心者から上級者への近道! ペイントツールSAIユーザーFAQ KNDY(SAI用テクスチャジェネレータ等があります) SAI用スマートスクロールプラグイン タブレットPC上でSAIを使うためのDLL ↑のサイトのトップページ SAI用スマートスクロールプラグイン SST(SAI Support Toolの略) SAI ConfEdit(テクスチャ管理ファイルの編集) リンク募集中! 2chスレ ■CG板 ペイントツールSAI 76色目(最新50) ペイントツールSAI 初心者 質問スレッド Part10(最新50)
https://w.atwiki.jp/chiaki/
会社名 株式会社chiakiコーポレーション 提供元 株式会社chiakiコーポレーション、Minecraft開発部が提供してます 概要 今後様々なテクスチャやアドオン、ワールドを配布していきたいと思います! テクスチャやアドオンがわからない人下のリンクから説明してます。 https //w.atwiki.jp/chiaki/pages/16.html
https://w.atwiki.jp/3dcustom/pages/25.html
GIMPとはフリーの画像編集ソフトです。 フォトショップなどプロユースの画像処理ソフトなんかもってねーよって人向けです。 エロパワーは偉大ナリ! ツール自体の使い方はこことかを参照してください。 http //www.tohoho-web.com/wwwgimp.htm ◆TGAファイルの処理 TSOファイルを開梱して作られたTGAファイルをGIMPで扱うには処理が必要です。(Ver.2.6.4以降では必要ないとのこと) 処理を行わずに読み込むと透明度等を記述しているアルファチャンネルが読み取られずに正しいテクスチャファイルになりません。 処理の方法はバイナリエディタで開き18バイト目を0x00から0x08に変更します。 改造スレでよくある記述では 00000011 00 08 ということです。 ◆TGAファイルの読み込み GIMPでTGAファイルを読み込んだ際に、[ダイアログ]-[チャンネル]でチャンネルダイアログを表示します。 赤青緑の三原色のほかにアルファチャンネルと表示されていればTGAファイルの処理は成功です。 ◆アルファチャンネルの編集 開いたTGAファイルは普通に編集可能ですが、アルファチャンネルだけを編集したい場合があります。 以下の手順でレイヤーマスクに変換して編集しましょう。 ・[ダイアログ]-[レイヤー]でレイヤーダイアログを表示する。 ・[レイヤー]-[マスク]-[レイヤーマスクの追加] ・レイヤーマスクの追加 ダイアログが表示されるので、[レイヤーのアルファチャンネルを移転]を選択して[追加]ボタン ・レイヤーダイアログにレイヤーマスクの欄が表示される。 ・[レイヤー]-[透明部分]-[アルファチャネルを削除]で移転元のアルファチャンネルを削除します。 ・レイヤーダイアログで右クリックし、[レイヤーマスクの表示]と[レイヤーマスクの編集]にチェックを入れる。 これでアルファチャンネルの編集が可能となります。 アルファチャンネルの編集が終わったら次の手順でアルファチャンネルとして適用します。 ・レイヤーダイアログで右クリックし、[レイヤーマスクの適用]を選択 ◆TGAファイルの保存 TGAファイルの保存は、以下の手順で行います。 ・[ファイル]-[別名保存]で拡張子TGAとして[保存]ボタンを押します。 ・TGA形式で保存 のダイアログが表示されたら、[RLE圧縮]が未チェック、[左下が原点]にチェックが入っていることを確認し、[保存]ボタンを押します。
https://w.atwiki.jp/bambooflow/pages/323.html
テクスチャマッピング テクスチャマッピング概要 詳細 まとめ 概要 テクスチャマッピングは、3D物体(ポリゴン)の表面の質感を表現するために、にテクスチャ(画像)を貼付けること。 貼り付ける物体形状とテクスチャの形状は一致している必要はありません。 大まかな手順は次のとおりです。 テクスチャとなる画像配列の準備 テクスチャ作成:画像配列をテクスチャバッファへ格納 ポリゴンへテクスチャを貼付け 画像配列は、RGBRGBRGB…とならんだデータのことです。 data[0] = Rデータ0 data[1] = Gデータ0 data[2] = Bデータ0 data[3] = Rデータ1 data[4] = Gデータ1 data[5] = Bデータ1 … OpenGLではBMPやJPEGなどから画像配列を取り出す機能は持ち合わせていませんので、変換処理する機構はユーザが任意に用意する必要があります。 テクスチャバッファへの格納は次の手順で行います。 glGenTextures // テクスチャオブジェクト生成 ↓ glBindTexture // テクスチャオブジェクト(アプリケーション側)とテクスチャバッファ(サーバー側)との対応付け ↓ glTexImage2D // 対応付けたテクスチャバッファへ画像配列を転送 ここでは設定もろもろ説明を省いています。 テクスチャの貼付けは、2種類の座標、テクスチャ座標と頂点座標とを関連付けることで行ないます。 たとえば、次のようになります。 glBegin(GL_QUADS); glTexCoord2d(0.0, 1.0); glVertex2d(-1,1,0); glTexCoord2d(0.0, 0.0); glVertex2d(-1,-1,0); glTexCoord2d(1.0, 0.0); glVertex2d(1,-1,0); glTexCoord2d(1.0, 1.0); glVertex2d(1,1,0); glEnd(); 詳細 サンプルコードの一部を抜粋します。 GLuint texture; void initializeGL() { GLubyte pixels[Width*Height*3]; // 画像データ読み込み … glPixelStorei(GL_UNPACK_ALIGNMENT,1); // テクスチャオブジェクト作成 glGenTextures(1, texture); glBindTexture(GL_TEXTURE_2D,texture); // 拡大縮小について設定 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // テクスチャの繰り返し設定 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // テクスチャバッファへ画像配列を転送 glTexImage2D( GL_TEXTURE_2D, // target 0, // level 3, // internalFormat Width, // 画像横サイズ Height, // 画像縦サイズ 0, // border GL_RGB, // 画像の形式 GL_UNSIGNED_BYTE, // データ型 pixels // 画像配列へのポインタ ); glBindTexture(GL_TEXTURE_2D,0); } void paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //モデル・ビュー・マトリックス設定 glMatrixMode (GL_MODELVIEW); glLoadIdentity(); //カメラ設定 gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glPushMatrix(); { // 平面表示 GLfloat color[] = { 1.0, 1.0, 1.0, 1.0 }; glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture); glBegin(GL_QUADS); glNormal3f(0.0, 1.0, 0.0); glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, 0.0, -1.0); glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 0.0, 1.0); glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 0.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, 0.0, -1.0); glEnd(); glDisable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); } glPopMatrix(); } まとめ テクスチャマッピング自体は、それほど難しくありません。 少しハードルを高くしている原因は画像の読み込みではないでしょうか。 C言語(GLUT)では、標準で画像を読み込む機構がないので画像を配列に変換する作業が面倒です。 OpenGLのユーティリティツールとしてあればよいのですが。。。 テクスチャに関するその他の技術 ミップマップ テクスチャ座標自動生成 キューブマッピング 環境マッピング マルチテクスチャ
https://w.atwiki.jp/sherpa2000/pages/36.html
立面図で壁表面のテクスチャを表示させたい場合。 次の設定にする事で表示されます。 ①壁の設定で「モデル」のテクスチャを「ベクトルハッチング」が設定されているものを選ぶ。 ②立面図の設定で「モデル表示」の中の「ベクトル3Dハッチング」にチェックを入れる。 立面図上で、壁の設定で選択したテクスチャが表示されます。
https://w.atwiki.jp/wiki3_sai/pages/51.html
解凍直後のフルセットと上書き更新用に含まれているオブジェクトの一覧とその補足説明です。 太字はファイル名、 太字 はフォルダ名です フルセット(17個) 上書き更新用(3~4個) 起動後に作成されるファイル その他 フルセット(17個) readme.txt ファイル名の通り、まずは読んで下さい。 また、よく分からない事があったらこれを読むことによって気付くことも多いでしょう。 history.txt 更新履歴です。頻繁に仕様は変わっていくので、 仕様の変化に混乱した時などにこれを確認すると良いかもしれません。 sai.exe ペイントツールSAI本体。 ダブルクリックすることでSAIが起動します。 sfl.dll SYSTEMAXフレームワークライブラリ。 SAIの土台のようなものです。 blotmap にじみ形状のテクスチャを格納するフォルダ。 elemap 筆形状のテクスチャを格納するフォルダ。 brushtex ブラシテクスチャを格納するフォルダ。 papertex 用紙テクスチャを格納するフォルダ。 brushform.conf にじみ・筆形状に関する設定ファイル。 brushtex.conf ブラシテクスチャに関する設定ファイル。 papertex.conf 用紙テクスチャに関する設定ファイル。 toolink ペン入れ系ブラシツールの情報を格納するフォルダ。 toolnrm 通常のブラシツールの情報を格納するフォルダ。 presetcvsize.conf キャンバスサイズのプリセットに関する設定ファイル。 新規作成時のプリセットサイズ一覧をこのファイルを編集することで変更できます。 help.chm ヘルプファイルです。 _language_ja.conf 言語設定ファイルです。日本語で良い方にはあまり関係ありません。編集方法などはファイル内の説明を参照して下さい。 misc.ini 補助設定ファイル。 手ぶれ補正時のマウスカーソルの位置 ワコムのタブレットドライバ Ver6.04 以降のマルチディスプレイ切り替えのバグへの対処 カラーパレットのマスのサイズ、マスの数を任意に設定できます。 ※.confファイルや.iniファイルが関連付けられていない人は、メモ帳などにドラッグ&ドロップすれば開くことができます。 上書き更新用(3~4個) ※上書き更新用には、ブラシ設定などを残したままアップデートするために必要最低限のファイルだけが入っています。 history.txt sai.exe sfl.dll _misc.ini フルセットのmisc.iniを上書きしないようファイル名の先頭にアンダーバーが付いています。 バージョンアップ等をした後ではSAIフォルダにmisc.iniと_misc.iniの二つのファイルができます。_misc.iniで設定可能な項目が増えている場合があるので、このファイルで設定を変更する場合は既存のmisc.iniを削除し、こちらのファイル名をmisc.iniにリネームして下さい。 起動後に作成されるファイル ■SAI本体フォルダ内 .cidおよび.datファイル 描画中に生成される、REDOやUNDO用の一時的なヒストリーデータ。 SAIを終了したあとに自動的に消えますが、残ってしまっている場合は、消してしまっても大丈夫です。 sai.ssd SAIの終了後に生成される、恐らくSAIの環境情報などを保存しているファイル。ユーザーパレットなどもこの中です。 sysinfo.txt SAIの終了後に生成される、ユーザーPCの情報です。 自分のPCのスペックを他人に報告する場合などにこれをコピペしましょう。 errlog.txt SAI起動中に内部エラーが発生し、右下にエラーログが出た時に生成されます。 このファイルが不具合の原因の手がかりになることもあるので、出来れば再現方法なども添えてKOJI氏へメールで送信しましょう。 メールアドレスはreadme.txtの「開発への協力のお願い」に記載されています。 ■ユーザープロファイルフォルダ内 thumbnail ファイルビューア用のサムネイルデータが入っています。 サムネイルが壊れた時は、このフォルダ内の.ssdファイルを削除してみましょう。 keyconfig.txt [その他]>[ショートカットキー設定]で変更を反映させると、生成されるファイルです。 これを削除すればショートカットキーの割り当てが初期化されます。(ブラシのショートカットキーは toolnrm フォルダのiniファイルに記述されてます) recent.txt [ファイル]>[最近使ったファイル]のリストがここに保存されています。 bookmark.txt ファイルビューアでブックマークとして保存したパスが記述されています。 その他 sai-xxxxxxxxxxxx.slc ライセンスファイルです。起動するSAI本体と同じ場所に置きます。
https://w.atwiki.jp/masato864/pages/2.html
メニュー トップページ テクスチャパック テクスチャパック導入方法 基本事項 Minecrush 最新バージョン Q&A Q&A 質問 質問掲示板 リンク sontyuさんのブログ ニコニコ動画 sontyuさんのマイページ カウンター 今日 - 昨日 -