.ogg再生(OpenAL)

OpenGLプログラミングメモ内検索 / 「.ogg再生(OpenAL)」で検索した結果

検索 :
  • .ogg再生(OpenAL)
    OpenAL で .ogg を再生します。 #pragma comment ( lib, libogg_static.lib ) #pragma comment ( lib, libvorbis_static.lib ) #pragma comment ( lib, libvorbisfile_static.lib ) #pragma comment ( lib, OpenAL32.lib ) #include vorbis/vorbisfile.h #include windows.h #include al.h #include alc.h #include stdio.h #define NUM_BUFFERS 32 #define BUFFER_SIZE 4096 void main() {     ALCdevice *device;    ...
  • メニュー
    ...)(OpenAL) .ogg再生(OpenAL) 3Dサウンド(OpenAL) .mid再生(OpenAL) ▲▲▲▲▲ ▼ サウンド編 DirectSound .wav再生(DirectSound) ストリーミング再生(DirectSound) 3Dサウンド(DirectSound) ▲▲▲▲▲ ▼ サウンド編 DirectShow 音声ファイル再生(.wav,.mid等) 再生位置の取得 再生位置の設定 再生終了時間の取得 ▲▲▲▲▲
  • .wav再生(OpenAL)
    OpenAL で .wav をループ再生します。 このプログラムは .wav を全部読み込んで再生するので メモリを多く使います。 #pragma comment(lib, OpenAL32.lib ) #pragma comment(lib, alut.lib ) #include stdio.h #include AL/alut.h void main (int argc, char **argv) {   ALuint buffer, source;   alutInit( argc, argv);   buffer = alutCreateBufferFromFile( sample.wav );   alGenSources(1, source);   alSourcei(source, AL_BUFFER, buffer);   alSourcei(source...
  • ストリーミング再生(.wav)(OpenAL)
    OpenAL で .wav をストリーミング再生します。 #pragma comment(lib, OpenAL32.lib ) #pragma comment(lib, alut.lib ) #include stdio.h #include AL/alut.h #include vector #include iostream #include fstream using namespace std; class WaveFile{ public     ~WaveFile(){         fp.close();     }     bool Open(const char *path);     int Read(void *out, size_t size);     bool IsEnd()const{return (0==LoadedSize)...
  • 音声ファイル再生(.wav,.mid等)
    DirectShowを使って音声ファイルを再生してみます。 DirectShowはフィルタ(コーデック)をインストールするとかなりの ファイル形式を再生する事ができます。 .ogg もフィルタをインストールしたら再生できました。   #pragma comment (lib, strmiids.lib ) #include windows.h #include dshow.h #define FileName TEXT( test.mid ) IGraphBuilder *pGB; IMediaControl *pMC; void Init() {  //COMを初期化  CoInitialize(NULL);  //FilterGraphを生成  CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,  IID_IGrap...
  • なぜOpenGLを使うのか?
    なぜ、DirectXではなくOpenGLなのか? 最新のグラフィックス、最速の描画を行うのであれば間違いなくDirectXがベストですが、 3Dを勉強したい、ころころ変わるDirectXにはついて行けないという方、いろんなOSで シェーダーモデル5.0を使いたいという方にはOpenGLをおススメします。 OpenGL 4.0 OpenGL4.0を駆使すれば、MacOSやLinux、Windows XP、Vista、7、8の4世代のWindowsに渡って DirectX 11世代のシェーダーモデル5.0を使う事ができます。 DirectXより簡単 当サイト管理人の感想ですが、DirectXに比べてOpenGLは割と簡単な印象を受けます。 業界標準となる可能性 OpenGLが右手座標系、DirectXが左手座標系を採用しているのは大きな明暗。 数学や...
  • 設定の仕方
    Visual Studio 2022 Community のインストール Visual Studio 2022 Community https //visualstudio.microsoft.com/ja/downloads/ こちらから、Visual Studio 2022 Community をインストールしてください。 デフォルトだと開発環境の背景色が『濃色』になっていて見にくいので『淡色』に変更します。 ツール→オプションの環境→全般の配色テーマを『淡色』にします。 これで昔ながらの見やすい開発環境になりました。 Visual Studio 2012 Express for Windows Desktop のインストール Visual Studio 2012 Express for Windows Desktop http //www...
  • C++/CLIでOpenGLを簡単に表示する
    こちらに OpenGL Simple Adapter があるので使わせてもらいます。 nursの日記http //d.hatena.ne.jp/nurs/20080315/1205598655 使い方は OpenGL Simple Adapter.h をインクルードして OpenGLSimpleAdapter のインスタンスを作成して GLAdapter- BeginRender(); と GLAdapter- EndRender(); の間に いつもの OpenGL のコードを記述するだけです。 OpenGL Simple Adapter.h #pragma once #pragma comment( lib, opengl32.lib ) #pragma comment( lib, glu32.lib ) #pragma comment( lib, gdi32.lib ...
  • MESH VIEW(メッシュビューア)
    MESH VIEW (OPENGL プログラミングメモ) ver1.16 ダウンロードはこちら MeshView ver1.16.zip //////////////////////////////////////////////////////////////////////////// MeshView [OPENGL プログラミングメモ] ver1.16 作者 OPENGLプログラミングメモ ホームページ(OPENGLプログラミングメモ) https //w.atwiki.jp/opengl/ ホームページ2(MeshView) http //www.meshview.jp/ ///////////////////////////////////////////////////////////////////////...
  • .wav再生(DirectSound)
    DirectSound で .wav を再生します。 これまでと同様にウインドウハンドルを取得すれば freeglut と DirectSound を組み合わせて使用できます。 #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, winmm.lib ) #pragma comment(lib, dsound.lib ) #include GL/freeglut/freeglut.h #include mmsystem.h #include dsound.h #include stdio.h #define SAFE_RELEASE(p) {if(p){(p)- Release();(p)=NULL;}}//安全に解放する #define Fi...
  • 再生速度の変更
    データはそのままでサンプリングレートをいじるだけで 再生スピードを変えます。   #include stdio.h #include stdlib.h #include string.h   #define FileName Warp1_ste.wav //適当な曲を探して下さい。 #define Speed 0.5 //再生スピードの倍率   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WAV_STEREO      2   #pragma pack(push,1) struct WaveFileHeader...
  • .midを再生する(mciコマンド)
    mciコマンドを使用して midi を再生します。 他にも様々な音声ファイルや動画なども再生できますが、 今回は midi だけです。 ファイル main.cpp sample.mid (自分で用意して下さい) main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, winmm.lib ) #include windows.h #include mmsystem.h #include GL/freeglut/freeglut.h #include stdio.h #define WIDTH 320 #define HEIGHT 240 MCI_OPEN_PARMS mop; class GLFONT { public  HFON...
  • C++/CLI:ファイルダイアログ
    基本プロジェクトにオープンファイルダイアログを配置します。 フォーム上には何も表示されず、フォームデザイナの下の方に オープンファイルダイアログコントロールが表示されます。 オープンファイルダイアログを起動するには何かアクションが必要なので ボタンも配置します。 ボタンの TEXT を「ファイルを開く」にします。 ボタンをダブルクリックして以下のコードを追加します。      //ファイルフィルタ       openFileDialog1- Filter = 画像ファイル(*.bmp,*.jpg,*.png,*.tif,*.ico)|*.bmp;*.jpg;*.png;*.tif;*.ico ;       openFileDialog1- ShowDialog();      //取得したファイル名       String^ FileName = openFileDialo...
  • ファイルを開くコモンダイアログ
    オープンファイルダイアログです。 resource.h  #define IDR_MENU1  100  #define ID_EXIT   101  #define ID_TEST   102  #define ID_A   103  #define ID_B   104  #define ID_Menu   105  #define ID_Whats  106  #define ID_Help   107  #define ID_STATUS  108  #define ID_OPEN  109  #define ID_SAVE  110 menu.rc #include resource.h   IDR_MENU1 MENU  BEGIN      POPUP File      BEGIN    MENUITEM 開く ,  ID_OPEN    MENUITEM 名...
  • JPEG画像を表示する
    JPEG画像を読み込んで表示します。 フルカラーとグレースケールのみサポートしています。 かなりデータサイズを小さくできるので広く使われています。http //www.ijg.org/こちらのサイトでフリーのJPEGライブラリのソースコードが配布されています。 libjpeg.lib を作成してください。作り方はgoogleなどで検索して作って下さい。 jpeglib.h , jconfig.h , jmorecfg.h , libjpeg.lib をプロジェクトのフォルダに設置して下さい。 これでJPEGを読み込む準備が整いました。   ファイル main.cpp jpeglib.h (配布先サイトから入手して下さい) jconfig.h (配布先サイトから入手して下さい) jmorecfg.h (配布先サイトから入手して下さい) libjpeg.lib (自分で作成して下さい) ...
  • OpenGLのバージョンとGPUの情報を得る
    OpenGLのバージョンとGPUの情報を取得します。 ファイル main.cpp main.cpp #include stdio.h #include GL/freeglut/freeglut.h int main(int argc, char *argv[]) {  glutInitWindowPosition(10, 10);  glutInitWindowSize(10, 10);  glutInit( argc, argv);  glutCreateWindow( Check OpenGL );  printf( OpenGLのバージョン  %s\n ,glGetString(GL_VERSION));  printf( ハードウェアベンダー  %s\n ,glGetString(GL_VENDOR));  printf( GPU  %s\n ,glGetStr...
  • ODE:箱の自由落下と地面との衝突判定
    箱が上から落ちてきて、地面でバウンドします。 値を設定するだけで、後は勝手にシミュレーションしてくれます。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, ode_doubled.lib ) #include GL/freeglut/freeglut.h #include ode/ode.h #include vector using namespace std; #define WIDTH 320 #define HEIGHT 240 #define ODE_MAX_CONTACTS 1024 //ライトの位置 GLfloat lightpos[] = { 2.0, 4.0, 1.0, 0.0 }...
  • 鏡面反射
    プラスチックや金属など、よく磨きこまれた反射率の高い物体に光が当たると 表面が光り輝いているように見えます。 そのハイライトを表現するのが鏡面反射です。   vertex.shader //フラグメントシェーダーに渡す変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   gl_Position = ftransform(); } flagment.shader //頂点シェーダーから受け取る変数 varying vec3 P;//位置ベクトル varying vec3 N;//法線ベクトル void main(void)...
  • ファイル保存のコモンダイアログ
    名前を付けて保存のダイアログを表示します。 ちなみに、ファイル保存の処理をプログラムしないと実際には保存されません。 あしからず。。。 resource.h  #define IDR_MENU1  100  #define ID_EXIT   101  #define ID_TEST   102  #define ID_A   103  #define ID_B   104  #define ID_Menu   105  #define ID_Whats  106  #define ID_Help   107  #define ID_STATUS  108  #define ID_OPEN  109  #define ID_SAVE  110 menu.rc #include resource.h   IDR_MENU1 MENU  BEGIN      POPUP File  ...
  • 距離減衰
    距離による光の減衰です。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {  vec3 L = gl_LightSource[0].position.xyz - P;  f...
  • ODE:セットアップ
    Open Dynamics Engine http //www.ode.org/ Open Dynamics Engine の場合は GitHub ではなく Bitbucket ですが、Visual Studio の場合は同じやり方で リポジトリをクローンできます。 (2023/9/24 現在の最新版のバージョンは 0.16.4 です。) Get the source code from BitBucket. となっている所を右クリックして、Bitbucket のリポジトリアドレスをコピーしたら いつものようにVisual Studio 2022 でリポジトリをクローンしてコンパイルするだけです。 GitHub のリポジトリをクローンしてコンパイルする方法は OpenGLプログラミングメモの別ページで新たに作りますのでそちらを参考にして下さい。 ...
  • 拡散照明
    環境光だけではのっぺりとした図にしかなりません。 立体的に見せるには陰影を付けてやらなければなりません。 拡散反射光は光源から入ってくる光を全ての方向に均一に反射します。 紙のようにざらざらとした光沢の少ないものの表現に適しています。 反射する光の量は、入射する光の量に応じて変化し、入射する光の量は 光のあたる場所によって異なるので、物体の形に陰が付きます。 左の画像は頂点シェーダーのみで陰影を付けたものですが、ハイライトの部分に何やら 線のようなものが見えます。これは頂点単位で色の補間が行われているためです。 右の画像は頂点シェーダーで位置ベクトルと法線ベクトルを計算しておき、フラグメントシェーダーに 渡してフラグメントシェーダーで光の計算をしています。 こうするとピクセル単位で色の計算(補間)が行われるので非常に綺麗な結果が得られます。 フラグメントシェーダーに渡す変数は varyin...
  • 簡易シャドウイング
    平面上に影のように見えるオブジェクトを描画します。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    vec3 L = normalize(gl_LightSource...
  • LibSynth++ 解析編
    では、早速 LibSynth++ の使い方を探ってみたいと思います。 http //www5.atpages.jp/~my04337/ tomoteruの生成物倉庫 の 初代LibSynth++ のページにある *LibSynth++ AlphaTest Rev.18 LibSynth++ – Header,Lib(Visual Studio2008用) から LibSynthPP.cab をダウンロードします。 解凍して Include フォルダにある LibSynth++.h を見てみましょう。   ざっと見た所、 ~90行まで 定数定義 ~296行まで メッセージ制御系 ~484行まで バッファ処理系 ~601行まで 双二次フィルタ系 ~636行まで WaveTable ~709行まで オシレータ ~931行まで midiパーサ系 ~1163行まで オシレータ系 ~165...
  • 再生位置の取得
    現在の再生位置をミリ秒で取得します。 メインループを別スレッドで作成し、TextOut 関数で再生時間を表示します。   #pragma comment (lib, strmiids.lib ) #include windows.h #include string #include dshow.h using namespace std; #define FileName TEXT( test.mid ) IGraphBuilder *pGB; IMediaControl *pMC; IMediaSeeking *pMSeek; long length; HWND hwnd; HDC hdc; wchar_t buf[256]; wstring str; //ミリ秒表示用 wchar_t* L2A(long a) {  _ltow_s(a/100000, buf,256, ...
  • フォグ
    フォグです。 vertex.shader  //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_FogFragCoord = abs(P.z);//フォグ座標    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  uniform int fogMode;   void main(void...
  • 再生位置の設定
    再生位置を設定します。 今回はスペースキーで一時停止し、再生位置を500ミリ秒の所までシークします。 リターンキーで再生を再開します。   #pragma comment (lib, strmiids.lib ) #include windows.h #include string #include dshow.h using namespace std; #define FileName TEXT( test.mid ) IGraphBuilder *pGB; IMediaControl *pMC; IMediaSeeking *pMSeek; long length; long set=50000000;//500ミリ秒から HWND hwnd; HDC hdc; wchar_t buf[256]; wstring str; //ミリ秒表示用 wchar_t* L2A(...
  • GLSL:テクスチャマッピング
    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...
  • .wavを再生する(win32API)
    Win32API の PlaySound を使用して .wav を再生します。 glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS); を 指定すると freeglut の場合、 glutMainLoop(); から戻ってくる事が可能です。 いつも解放はOSまかせにしている管理人ですが、今回は解放コードも記述しました。 ファイル main.cpp sample.wav (自分で用意して下さい) main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, winmm.lib ) #include windows.h #include mmsystem...
  • ツールチップを表示する
    ツールチップです。一定時間ツールバーの上でマウスカーソルを停止すると現れます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TOOLBAR    109   #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #d...
  • スポットライト
    スポットライトです。 vertex.shader //フラグメントシェーダーに渡す変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル   void main(void)  {    P = vec3(gl_ModelViewMatrix * gl_Vertex);    N = normalize(gl_NormalMatrix * gl_Normal);    gl_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  int numLight = 2;   void main(void)  {  gl_FragColor = vec4(0.0);  floa...
  • 再生終了時間の取得
    今回はメディアの再生終了時間を取得します。 再生が終わる時間がわかればループ再生の処理なども可能になります。   #pragma comment (lib, strmiids.lib ) #include windows.h #include string #include dshow.h using namespace std; #define FileName TEXT( test.mid ) IGraphBuilder *pGB; IMediaControl *pMC; IMediaSeeking *pMSeek; long length,end; HWND hwnd; HDC hdc; wchar_t buf[256]; wstring str; //ミリ秒表示用 wchar_t* L2A(long a) {  _ltow_s(a/100000, buf,256, ...
  • 床面反射
    床面反射です。 床面を半透明で描画し、オブジェクトを床面を境にして 反対側にも描画する事で疑似的に映り込みを表現しています。 brick.png marble.png  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_TextureMatrix[0] * gl_MultiTexCoord0;   gl_Position = ftransform(); } flagment.shader varying vec3 P; varying vec3 N; uniform sam...
  • .FBXを読み込んでみる1(解析編)
    .FBX を読み込んで表示できると便利です。 .FBX は Autodesk 社の製品の中間ファイルフォーマットです。 3ds Max , Maya , MotionBuilder , Mudbox , Softimage 間のデータを 受け渡す時のために作られました。 その後、Lightwave 3D や CINEMA 4D や Shade でも使えるようになりました。 FBXはバージョンによってファイルの内容が違います。 一般的に使用するには FBX SDK を使うのが良いです。 解析編という事で一応中身を見ておきます。 例によってメタセコイアを使います。http //horsetail.sakura.ne.jp/index.html こちらのサイトに FBXエクスポーター というプラグインがあるのでインストールします。 そしてメタセコイアで立方体を作って四角形面を三角形面にし、FBX...
  • ディスプレイリスト
    ディスプレイリストです。 OpenGLのコマンドをハードウェアが理解できる形に保存しておく機能です。 コンパイルされた状態でディスプレイリストが作成されるのでかなり高速に 処理できます。 ただし、ディスプレイリストに出来ない関数もありますので注意が必要です。 パラメータなどは定数となりますので何回も描画する物でパラメータが変化 しない物の描画に適しています。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #define WIDTH 320 #define HEIGHT 240 float angle=0.0f; GLuint ListID=0; GLuint Model[5...
  • ツールバーを表示する
    ツールバーを表示します。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #define IDM_DELETE  1060 #define IDM_CUT     1070 menu....
  • 環境光
    現実世界では、太陽や照明からの光が様々な物体に反射して光が直接当たらない場所でも 間接的に反射してきた光によってある一定の明るさになっています。 この空間に溢れる光を環境光といいます。 CGでこれを再現するにはラジオシティやグローバルイルミネーションなどがありますが、 計算コストが非常に高く、ゲームなどのリアルタイムな画面更新が求められるプログラムでは とても使う事はできません。 そこで、一般的には割とそれらしく見せるためにシーン全体に影響する一定の色を環境光として 使います。 vec4 ambient = gl_FrontLightProduct[0].ambient; で、OpenGLからアンビエント情報を受け取ります。 これを紐解いていくと、 glLightfv(GL_LIGHT0, GL_AMBIENT, Light); で設定したライトの光の範囲内で glMaterialfv(G...
  • .midを再生する(DirectMusic)
    DirectMusic の場合、.wav の再生と特に何の変更もなく .mid が再生できます。 ファイル名を変えるだけです。 Segment- SetParam( GUID_StandardMIDIFile, 0xFFFFFFFF, 0, 0, NULL ); を追加していますが、特に追加せずとも普通に再生してくれます。 *(2014.3.28追記) 尚、Visual Studio 2010からはディレクトリの参照設定を プロジェクト毎に個別に設定しないといけないようになってしまいました。 面倒くさいですね。(^ω^;) プロジェクトのプロパティで「C/C++」の「追加のインクルードディレクトリ」に $(DXSDK_DIR)Include を追加するとビルドが通るようです。 ファイル main.cpp sample.mid (自分で用意して下さい) main.cpp #pragma...
  • 投影マッピング
    投影マッピングです。 プロジェクターで投影させたようにテクスチャを張れます。 proj.png vertex.shader varying vec3 P; varying vec3 N; void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   gl_TexCoord[0] = gl_TextureMatrix[0] * gl_Vertex;//オブジェクトの座標値との積   gl_Position = ftransform(); } flagment.shader varying vec3 P; varying vec3 N; uniform sampler2D sampler; void main(void) {  ...
  • GLSL:マルチテクスチャ
    マルチテクスチャです。 今回のプログラムは地球の地表テクスチャと雲のテクスチャを合成し、 地表よりも雲を遅れて回転させています。 マウスの左ドラッグで視点を変更できます。 画像はNASAがフリーで配布している物を縮小して使用しています。 earth.png cloud.png 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_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord0;  ...
  • 困った時は
    当サイトのプログラムが正常に動作しない場合 まずは OpenGL とグラフィックスカードのドライバを最新のものにして下さい。 それでも解決しない場合はコメント板にて連絡を下さい。 コンソール画面を消す #pragma comment(linker, "/SUBSYSTEM WINDOWS /ENTRY mainCRTStartup") 以前のVisual Studio 2012辺りまでは、このプラグマでコンソール画面を消す事ができました。 もちろん今でも可能なのですが、現在のVisual Studio 2022ではデフォルトでプロジェクトの プロパティ、リンカーのシステムのサブシステムの項目が『コンソール (/SUBSYSTEM CONSOLE)』 になってしまっています。 これでは最初からプラグマコメントが入力されているので除去できません。 ...
  • .OBJを読み込んでみる3(表示編)
    .OBJ ファイルの読み込みプログラムが完成しましたので公開します。 取りあえず、インデックス化はせずに頂点配列で表示しています。 テクスチャはマテリアルで重複しないようにモデルクラスで保持しています。 完全に重複を避けるにはアプリケーション単位で保持する必要が あると思います。 PNG.h #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* FileNam...
  • オフスクリーンレンダリング
    オフスクリーンレンダリングです。 レースゲームのバックミラーの描画等で使われます。 metasequiaに付属のviolin.mqoを.xに変換して使用しています。violin.xはここからダウンロードして下さい。 右クリックして名前を付けてリンク先を保存でダウンロードできます。 violin.png  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.shad...
  • フラットツールバーを表示する
    素のツールバーではボタンの集合体に見えるのでフラットタイプにしてみます。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TOOLBAR    109   #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_PASTE   1050 #defi...
  • 環境マッピング
    環境マッピングです。 正面の球に部屋を反射させて描画します。 room.xは、ここからダウンロードできます。 右クリックして、名前を付けてリンク先を保存してください。 wall.png vertex.shader varying vec3 P; varying vec3 N; varying vec4 Reflect;  uniform mat4 ViewTranspose;//ビュー変換だけのモデルビュー行列の転置行列 void main(void) {   P = vec3(gl_ModelViewMatrix * gl_Vertex);   N = normalize(gl_NormalMatrix * gl_Normal);   vec3 incident = normalize(P);//入射視線ベクトル   vec3 reflect0 = reflect(incident...
  • シェブロンを表示する
    シェブロンデース   レバーコントロールで隠されてしまったコントロールを ポップアップメニューで表示します。 resource.h #define IDR_MENU1  100 #define ID_EXIT   101 #define ID_TEST   102 #define ID_A   103 #define ID_B   104 #define ID_Menu   105 #define ID_Whats  106 #define ID_Help   107 #define ID_STATUS  108 #define ID_TOOLBAR    109   #define IDM_NEW    1010 #define IDM_OPEN    1020 #define IDM_SAVE    1030 #define IDM_COPY    1040 #define IDM_...
  • .wavを再生する(DirectMusic)
    DirectInput の時と同じようにウインドウハンドルさえ取得できれば DirectMusic を freeglut と組み合わせて使用できます。 DirectMusic は現在は更新されておらず廃止予定?だそうです。 Windows7 では 32bit 版では DirectMusic を使用できますが 64bit 版にはありません。(XPモードなら使用できる?) いずれにしても、DirectMusic を使い続ける事は推奨できません。 今回のプログラムは DirectX SDK August2007 の参照設定を 使用しています。 *(2014.3.28追記) Windows8においてもWindows7同様の状態です。 尚、Visual Studio 2010からはディレクトリの参照設定を プロジェクト毎に個別に設定しないといけないようになってしまいました。 面倒くさいですね。(^ω...
  • 左右のチャンネルを操作
      ステレオWAVファイルを読み込んで左右の音を消してみます。 http //taira-komori.jpn.org/freesound.html こちらのサイトで効果音を借りてきました。   #include stdio.h #include string.h   #define FileName Warp1_ste.wav //適当な曲を探して下さい。   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WAV_STEREO      2   #pragma pack(push,1) struct WaveFile...
  • カラオケ化
     完全ではありませんが .wav ファイルからボーカルを除去します。 #include stdio.h #include stdlib.h #include string.h #include algorithm   using namespace std;   #define INFileName sound.wav #define OUTFileName karaoke.wav #define PAI   3.141592653589793 #define Length 3.00     // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAU...
  • DDS画像を表示する
    DDS画像を読み込みます。 DDS画像とは Direct Draw Surface ファイルの事です。 GLEW を使うと S3TC(DXTC)圧縮 を解凍できるようです。 ↓こちらのサイトに読み込みプログラムがありましたので使わせて頂きます。http //asura.iaigiri.com/OpenGL/gl7.htmlちょこっと改変してGLEWの初期化位置を変えてみました。   ファイル main.cpp sample.dds main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, glew32.lib ) #include GL/glew.h #include GL/freeglut/freeglut.h #include st...
  • @wiki全体から「.ogg再生(OpenAL)」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索