OpenCL:セットアップ

OpenGLプログラミングメモ内検索 / 「OpenCL:セットアップ」で検索した結果

検索 :
  • 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プログラミングメモの別ページで新たに作りますのでそちらを参考にして下さい。 ...
  • PhysX:セットアップ
    NVIDIA PhsyX についての解説です。 NVIDIA PhsyX は良く間違われますが CUDA とは違います。 CUDA は Compute Unified device Architecture の略で NVIDIA社の GPU に対する GPGPU を目的とした フレームワークまたは統合開発環境の事です。 GPU を動作させるためのプログラミング・モデル、およびプログラミング言語(CUDA-C)とそのコンパイラ、ライブラリを言います。 PhsyX は物理エンジンのSDKです。 NVIDIA PhsyX SDK 5.0.2 (2023/9/24最新) https //github.com/NVIDIA-Omniverse NVIDIA PhysX SDK 4.1 https //github.com/NVIDIAGameWorks 内の、 h...
  • Bullet:セットアップ
    こちらのページで Bullet Physics が公開されています。 Bullet Physics https //pybullet.org/wordpress/ (2023/9/24 現在の最新版のバージョンは 3.25 です。) Download の所をクリックすると GitHub の中の紹介ページに飛ぶので1階層戻ります。 Bullet Physics SDK の bullet3 の GitHub のリンクを右クリックして、リンクのアドレスをコピーします。 そしていつものように Visual Studio 2022 を起動して起動ウィザードのリポジトリのクローンを選択します。 リポジトリの場所に先ほどの GitHub のリンクのアドレスを貼り付けてクローンボタンを押します。 ソリューションエクスプローラーのフォルダービューをダブルクリッ...
  • メニュー
    Menu トップページ コメント板 GL Wrapper 総合サイト 初めに なぜOpenGLを使うのか? 設定の仕方 困った時は 考察 PC用語の独自調査 GitHubの使い方 Visual Studio 2022 DE Visual C++ 2015 Visual Studio 2017 Expressを入手する MESH VIEW(メッシュビューア) チュートリアルリンク ▼固定機能編へ ▼固定機能 スタティックメッシュ編へ ▼固定機能 階層メッシュアニメーション編へ ▼固定機能 スキニング編へ ▼シェーダー GLSL編へ ▼シェーダー 画像フィルタ偏へ ▼3Dライブラリ編 Irrlicht編へ ▼3Dライブラリ編 Ogre編へ ▼当たり判定 2D編へ ▼当たり判定 3D編へ ▼物理演算 Bullet Physicsへ ▼物理演算 ...
  • 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 ...
  • .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;    ...
  • .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...
  • 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...
  • ストリーミング再生(.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)...
  • なぜ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が左手座標系を採用しているのは大きな明暗。 数学や...
  • .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_Dialog  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_TEXT   109 #define ID_1   110 #define ID_2   111 #define ID_3   112 #define ID_popup  113 #define IDM_END   114 menu.rc #include windows.h #include resour...
  • 設定の仕方
    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...
  • アップダウンコントロールを表示する
    アップダウンコントロールを表示します。 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 menu.rc #include resource.h   IDR_MENU1 MENU BEGIN     POPUP File     BEGIN         MENUITEM Exit ,    ID_EXIT     END     POPUP Test     BEGIN         MENUITEM てすつ ,...
  • C++/CLI:webブラウザ
    基本プロジェクトにwebブラウザーコントロールを追加します。 プロパティのurlの所をクリックして今回は適当に  http //www21.atwiki.jp/opengl/ と入力します。 ビルドして実行してみましょう。 たったこれだけでwebページが表示できました。  MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyForm.h #pragma once namespace...
  • 考察
    大まかな歴史 DirectX 名称 登場日 概要 WinG、Display Control Interface Windows 3.1時代 DirectX 1.0 1995年10月 ゲーム作成用のAPI集GameSDKとして発表された。 DirectX 2.0 1996年6月 Direct3D (Immediate Mode, Retained Mode) の登場。 DirectX 3.0 1996年9月25日 DirectSound3D登場、DirectInputの統合。Windows NT 4.0ではSP3以降に同梱。 DirectX 4.0 登場予定だったが、DirectX 3.0からはわずかな変更であり、既にDirectX 5.0がロードマップ上にあったため、ベンダーの要望によりキャンセルされた。 DirectX 5.0 1997年8月4日 Direct3D に DrawPr...
  • ファイルを開くコモンダイアログ
    オープンファイルダイアログです。 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 名...
  • GLSLとの変数のやり取り
    GLSL に値を渡すには glGetUniformLocation を使用して シェーダー側の変数のIDを取得します glUniform1f 等でそのIDの変数に値をセットします。 vertex.shader  //OpenGLから受け取る変数 uniform float factor; vec4 v4 = vec4(0.0, 0.0, 0.0, 0.0);   void main(void) {  v4.x=factor;  gl_Position = gl_ModelViewMatrix * gl_Vertex + gl_ModelViewMatrix * v4;//頂点座標の出力  gl_FrontColor = gl_Color;//そのまま出力 } flagment.shader   //OpenGLから受け取る変数 uniform float flagment; vec4 ...
  • 文字列描画
    文字列を描画します。 文字列となるとDirectXでもOpenGLでも普通の方法は用意されていません。 GDIを使うと途端に遅くなるからです。 多くの場合、高速化のために自前の画像ファイルで文字を用意したりしていますが、 英数字ならまだしも日本語となると色々と問題がでてきます。 そこで wglUseFontBitmapsW という、文字をビットマップのディスプレイリスト で作ってくれる関数があるので、それを使います。 ここでいきなりクラスが登場していますが、初心者向けに解り易くしたつもりです。 とても便利なので使い方を覚えておきましょう。 ちなみに解放とかは省略、関数が成功したかどうかは if で調べていません。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStar...
  • C++/CLI:アップダウンコントロール
    基本プロジェクトにアップダウンコントロールを配置します。 NumericUpDown という名前です。 フォントのサイズを16にして Bold を True にします。 ビルドして実行してみましょう。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyForm.h #pragma once namespace Project1 {  using namespace System;...
  • ファイル保存のコモンダイアログ
    名前を付けて保存のダイアログを表示します。 ちなみに、ファイル保存の処理をプログラムしないと実際には保存されません。 あしからず。。。 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  ...
  • ツールチップを表示する
    ツールチップです。一定時間ツールバーの上でマウスカーソルを停止すると現れます。 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...
  • フラットツールバーを表示する
    素のツールバーではボタンの集合体に見えるのでフラットタイプにしてみます。 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...
  • C++/CLI:スプリットコンテナ
    基本プロジェクトにスプリットコンテナを配置します。 ビルドして実行してみましょう。 パネルとパネルの境界線を自由に移動させる事ができます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyForm.h #pragma once namespace Project1 {  using namespace System;  using namespace System Compone...
  • .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...
  • 固定機能との違い
    固定機能とプログラマブルシェーダーでは何がどう違うのでしょう。 固定機能ではフラットシェーディングやグーローシェーディング(スムースシェーディング)、 ワイヤーフレーム表示程度しかありませんでした。 擬似的にトゥーンシェーディングっぽく表示する事もできますが、トゥーンシェーディング とは全然品質が違います。 固定機能というのは、あらかじめ用意された範囲内で簡単手軽に機能を切り替えたり 描画に関する事を全て 『用意された中から選んで設定する』 という物でした。 簡単手軽ですが、グラフィックスで表現できる幅が文字通り固定されています。 そこで、より幅広いグラフィックスを表現するためにプログラマブルシェーダーが登場しました。 ここでは、シェーダー使用の描画とシェーダー未使用の描画をしてみました。 左が固定機能パイプラインで描画、右がシェーダーで色を反転させて描画した物です。 シェーダーファイルの...
  • 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...
  • .MQOを読み込んで表示する(GLMetaseq)
    メタセコイアのモデルデータ .mqo を読み込んで表示してみます。 言わずもがなOpenGLはただのグラフィックライブラリ、モデルデータの読み込みなども 全て自分でコードを書かなくてはなりません。 DirectXの .x 形式や .sdkmesh 形式のようなものと読み込みライブラリがあらかじめ 用意されていると楽ですが、そんなものはありません。 ただ、工学ナビ さんのサイトでmqoの読み込みライブラリ GLMetaseq がありますので 手始めに使ってみましょう。http //kougaku-navi.net/ARToolKit/index.html↑のページから GLMetaseq をダウンロードして、ヘッダファイルとソースファイルを プロジェクトに追加します。 GLMetaseq では glut を使用しているので GLMetaseq.h の227行目の#include をコメントア...
  • 空のウインドウを表示する
    とりあえず、何もないウインドウを表示します。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h void display(void) {     glClearColor(0.0, 0.0, 0.0, 1.0);     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     glFlush(); } int main(int argc, char *argv[]) {   glutInit( argc, argv);   glutInitDisplayMode(GLUT_RGBA);   glutCreateWindow( Hel...
  • 総集編:Lunaインターフェース
    総集編という事で、Windows XP の Luna インターフェースで表示してみます。 .manifest ファイルを作成する方法もありますがプログラムに直接、コードを 追加する方法を紹介しておきます。  #pragma comment(linker, /manifestdependency \ type= win32 \   name= Microsoft.Windows.Common-Controls \   version= 6.0.0.0 \   processorArchitecture= x86 \   publicKeyToken= 6595b64144ccf1df \   language= * \ ) 上記のコードをプログラムに追加すると簡単にビジュアルスタイルに変更できます。 Windows Vista からは aero というスタイルもあるみたいですが...
  • C++/CLI:バージョン情報ダイアログ
    バージョン情報ダイアログです。 これまでやってきた事を組み合わせれば これくらいは簡単にできますね。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include version.h #include MyForm.h using namespace Project1; using namespace System; using namespace System Reflection; [assembly AssemblyVersionAttribute( 1.0.1.0 )]; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return...
  • 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;  ...
  • 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...
  • ツールバーを表示する
    ツールバーを表示します。 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....
  • 困った時は
    当サイトのプログラムが正常に動作しない場合 まずは OpenGL とグラフィックスカードのドライバを最新のものにして下さい。 それでも解決しない場合はコメント板にて連絡を下さい。 コンソール画面を消す #pragma comment(linker, "/SUBSYSTEM WINDOWS /ENTRY mainCRTStartup") 以前のVisual Studio 2012辺りまでは、このプラグマでコンソール画面を消す事ができました。 もちろん今でも可能なのですが、現在のVisual Studio 2022ではデフォルトでプロジェクトの プロパティ、リンカーのシステムのサブシステムの項目が『コンソール (/SUBSYSTEM CONSOLE)』 になってしまっています。 これでは最初からプラグマコメントが入力されているので除去できません。 ...
  • C++/CLI:ツールチップ
    基本プロジェクトにツールチップを配置します。 ボタンを配置します。 すると、プロパティに toolTip1のToolTip という項目が出てきます。 ちなみに、ツールチップ配置前は存在しません。 toolTip1のToolTipに「ボタンでーす。」と入力します。 ビルドして実行してみましょう。 ボタンの上にマウスカーソルを載せるとツールチップが表示されます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  r...
  • C++/CLI:ツールストリップコンテナ
    基本プロジェクトに ToolStripContainer を配置し、 フォームの四辺にドッキングするをクリックします。 このようになりました。 デフォルトではフォームの四辺の上側にツールバーを置くエリアがあります。 フォームの四辺にあるコンテナパネルをクリックするとツールストリップを 配置するエリアが現れます。 とりあえず、上側のエリアにツールストリップを配置します。 ツールバーにボタンとラベルを追加しました。 ビルドして実行してみましょう。 ツールバーのつまみをドラッグしてフォームの四辺に移動させると ツールバーの位置を変える事ができます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace ...
  • サンプリングビット変換
    サンプリングビット数を16Bitから8Bitに変換します。 音質は少し劣化しますがデータサイズは半分になります。 #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 WaveFileHeader{     char            Riff[4];    ...
  • シェブロンを表示する
    シェブロンデース   レバーコントロールで隠されてしまったコントロールを ポップアップメニューで表示します。 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_...
  • 環境光
    現実世界では、太陽や照明からの光が様々な物体に反射して光が直接当たらない場所でも 間接的に反射してきた光によってある一定の明るさになっています。 この空間に溢れる光を環境光といいます。 CGでこれを再現するにはラジオシティやグローバルイルミネーションなどがありますが、 計算コストが非常に高く、ゲームなどのリアルタイムな画面更新が求められるプログラムでは とても使う事はできません。 そこで、一般的には割とそれらしく見せるためにシーン全体に影響する一定の色を環境光として 使います。 vec4 ambient = gl_FrontLightProduct[0].ambient; で、OpenGLからアンビエント情報を受け取ります。 これを紐解いていくと、 glLightfv(GL_LIGHT0, GL_AMBIENT, Light); で設定したライトの光の範囲内で glMaterialfv(G...
  • スポットライト
    スポットライトです。 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...
  • .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...
  • 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 (自分で作成して下さい) ...
  • 画像の一部をストレッチ描画する(LodePNG)
    PNG画像を読み込んで画像の一部をストレッチ描画します。http //members.gamedev.net/lode/projects/LodePNG/に、ある LodePNGモジュールを使用します。 このLodePNGは.cppファイルと.hファイルのみで構成されているので手軽に組み込めます。 zlib も libpng も何も使わずに.cppソースのみでPNG画像が読み込めます。 また、LodePNGは、どのように使ってもよいそうです。再配布も可能です。 作者への連絡も必要ないそうです。素晴らしいですね。 使い方も簡単で LodePNG_loadFile で読み込んで LodePNG_decode で、デコード します。 画像の一部を断片的に描画するようにするにはST座標(DirectXではUV座標)を指定して あげれば良いです。 『画像を表示する』のチュートリアルでは、glTexC...
  • C++/CLI:リンクラベル
    基本プロジェクトに LinkLabel を配置します。 プロパティの Text をクリックして今回は適当に http //wiki.livedoor.jp/glwrapper/ と、入力します。 LinkLabel をダブルクリックして以下のコードを追加します。      // アクセス済とする      linkLabel1- LinkVisited = true;      // 既定のアプリケーションで URL を開く      System Diagnostics Process Start(linkLabel1- Text); ビルドして実行してみましょう。 url をクリックするとwebブラウザが起動してwebページが表示されます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY m...
  • C++/CLI:MDI
    基本プロジェクトを立ち上げます。 フォームのプロパティの IsMdiContainer を True にします。 プロジェクトに新しい項目を追加します。 Visual C++ の UI の Windowsフォームを選択し、名前を MDIForm.h にして追加ボタンを押します。 MyForm を選択して、Size を Width 640、Height 480 にします。 MyForm.h のコードを表示して、以下のコードを追加します。    //    //TODO ここにコンストラクター コードを追加します    //    Form^ MDIForm = gcnew Form;    int childCount=0;    childCount++;    String^ formText = String Format( MDIForm {0} , child...
  • 画像を表示する(glpng)
    先の『画像を表示する(GDI+)』では GDI+ を使いましたが、 GdiPlus.h を見ると struct IDirectDrawSurface7; なる表記があります。 内部で DirectX7 を使用しているようです。 OpenGLなのにDirectXは使いたくない!!とか、 WindowsじゃないOSで画像を読み込みたい!!という方のために glpng を 使った方法も記載しておきます。   #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include stdio.h #include gl/glpng.h #define WIDTH 320 #define HEIGHT 240 pngInfo info; GL...
  • C++/CLI:日付入力
    基本プロジェクトに DateTimePicker を配置します。 ビルドして実行してみましょう。 プルダウンメニューから日付を選択できます。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  MyForm ^form1 = gcnew MyForm;  form1- ShowDialog();  return 0; } MyForm.h #pragma once namespace Project1 {  using namespace System;  using namespace System Compon...
  • 再生速度の変更
    データはそのままでサンプリングレートをいじるだけで 再生スピードを変えます。   #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...
  • @wiki全体から「OpenCL:セットアップ」で調べる

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