CUDA:セットアップ

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

検索 :
  • 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...
  • 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プログラミングメモの別ページで新たに作りますのでそちらを参考にして下さい。 ...
  • 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:アップダウンコントロール
    基本プロジェクトにアップダウンコントロールを配置します。 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_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...
  • ボーンオフセット行列
    以下は SkinWeights チャンクですが、最後の方にある matrixOffset は ボーンオフセット行列と呼ばれます。 SkinWeights    {     Joint_2 ;  //transformNodeName ボーン名     32;  //nWeights ボーンの影響を受ける頂点の数     0,  // ↓ vertexIndices ボーンの影響を受ける頂点のインデックス ・ ・ ・     0.001631,  // ↓ weights ボーンの影響を受ける各頂点の重み ・ ・ ・     1.000000,0.000000,-0.000000,0.000000,  // ↓ matrixOffset     0.000000,1.000000,-0.000000,0.000000,  //メッシュの頂点をボーン空間に変換する行列     -0.000...
  • アップダウンコントロールを表示する
    アップダウンコントロールを表示します。 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 てすつ ,...
  • Visual Studio 2022 DE Visual C++ 2015
    Visual Studio 2022 DE Visual C++ 2015 とは? かつて、Visual Studio 2015 をインストールしようとしてできなかった人が結構居るのではないでしょうか? 何故かインストールに失敗してできなかった人が結構居ると思います。(当サイト管理人もその一人です。。。) Ж できました。。。 Visual Studio 2017 や Visual Studio 2019 、果ては Visual Studio 2022 まであるのに今更何故 2015 なのか? と、思う方は要ると思います。 結論から言うと PhysX の最新版 ver 5.0.2 や ver 4.1 をコンパイルするには Visual C++ 2015でないとコンパイルできないからです。 と、いう訳で Visual Studio 2022 から Visual C++...
  • 考察
    大まかな歴史 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...
  • C++/CLI:プログレスバー
    前回のアップダウンコントロールの続きです。 プログレスバーを配置します。 アップダウンコントロールをダブルクリックして以下のコードを追加します。      progressBar1- Value = (int)numericUpDown1- Value; ビルドして実行してみましょう。 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 nam...
  • fluidsynthの.libをVisual Studioでコンパイルする
    FluidSynth https //www.fluidsynth.org/ こちらに FluidSynth という、サウンドフォント シンセサイザーがあるので使わせて頂こうと思います。 2023年9月18日現在、最新版の FluidSynth 2.3.2 をダウンロードします。 Recent News の Released FluidSynth 2.3.2 をクリックしてページを移り、 https //github.com/FluidSynth/fluidsynth/releases/tag/v2.3.2 となっている所を クリックします。 64bitは fluidsynth-2.3.2-win10-x64.zip 32bitは fluidsynth-2.3.2-winXP-x86.zip を、ダウンロードして解凍し、Cドライブ C \ に移動させます。 FluidSynth ht...
  • 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 ...
  • ミップマップ
    ミップマップです。 ミップマップは、あらかじめ元のサイズのテクスチャを縮小したものを用意しておき、 小さく表示される時は小さいテクスチャを使用します。 今回のプログラムはスペースキーを押す度にフィルタが切り替わります。   ファイル main.cpp lodepng.cpp lodepng.h maptip.png main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include stdio.h #include string #include lodepng.h using namespace std; #define WIDTH 640 #define HEIGHT 480 bool f...
  • 総集編: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 というスタイルもあるみたいですが...
  • 設定の仕方
    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...
  • サイン波の生成
    サイン波を作成します。 #include stdio.h #include stdlib.h #include string.h #include math.h   #define PAI   3.141592653589793 #define FileName sin.wav //例 全長:秒 100 1サイクル:μ秒 20000 #define Cycle 5000 //1サイクル [u sec] #define Length 50 //全長 [sec] #define Max 15000 //max 32768.0f   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   ...
  • 文字列描画
    文字列を描画します。 文字列となるとDirectXでもOpenGLでも普通の方法は用意されていません。 GDIを使うと途端に遅くなるからです。 多くの場合、高速化のために自前の画像ファイルで文字を用意したりしていますが、 英数字ならまだしも日本語となると色々と問題がでてきます。 そこで wglUseFontBitmapsW という、文字をビットマップのディスプレイリスト で作ってくれる関数があるので、それを使います。 ここでいきなりクラスが登場していますが、初心者向けに解り易くしたつもりです。 とても便利なので使い方を覚えておきましょう。 ちなみに解放とかは省略、関数が成功したかどうかは if で調べていません。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStar...
  • 三角波の生成
    三角波を作成します。 #include stdio.h #include stdlib.h #include string.h     #define FileName triangle.wav //例 全長:秒 100 1サイクル:μ秒 20000 #define Cycle 5000 //1サイクル [u sec] #define Length 50 //全長 [sec] #define Max 20000 //max 32768.0f   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WAV_STEREO...
  • .MQOローダ(ワイヤーフレーム表示編)
    ワイヤーフレーム表示です。 最初、 glDrawArrays を使って描画したら遅くて実用的ではありませんでした。 そこで色々、思考錯誤して glMultiDrawArrays を使ったら、割りとそれなりの 速度で描画できるようになったので公開します。   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* FileName);//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_Position = ftransform();  } flagment.shader  //頂点シェーダーから受け取る変数  varying vec3 P;//位置ベクトル  varying vec3 N;//法線ベクトル  int numLight = 2;   void main(void)  {  gl_FragColor = vec4(0.0);  floa...
  • 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...
  • .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;    ...
  • ノコギリ波の生成
    ノコギリ波を作成します。 #include stdio.h #include stdlib.h #include string.h     #define FileName sawtooth.wav //例 全長:秒 100 1サイクル:μ秒 20000 #define Cycle 5000 //1サイクル [u sec] #define Length 50 //全長 [sec] #define Max 20000 //max 32768.0f   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WAV_STER...
  • sin波状にボリューム変換
    sin波状にボリュームを変化させます。 #include stdio.h #include stdlib.h #include string.h #include algorithm   using namespace std;   #define INFileName in.wav #define OUTFileName sinamp.wav #define PAI   3.141592653589793 #define Length 0.01     // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #define STR_data     data   #define WAV_MONAURAL    1 #define WA...
  • 左右バランスの変更
    音を左右に振ります。 #include stdio.h #include stdlib.h #include string.h #include algorithm   using namespace std;   #define INFileName sin.wav #define OUTFileName balance.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_MONAURAL    1 #define WAV_STERE...
  • テッセレーション
    テッセレーションです。 面を再分割してくれます。 今回のプログラムはスペースキーを押すとテッセレーションで表示します。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include stdio.h #include GL/freeglut/freeglut.h #include vector using namespace std; #define WIDTH 320 #define HEIGHT 240 //頂点情報用 struct vector3d{  double x;  double y;  double z; }vec3d; vector vector3d vertex; //テッセレータオブジェクト GLUtess...
  • BMP画像を表示する
    BMP画像を表示します。 BMPと言っても今回は24bit画像に限定します。 知っての通り、最もポピュラーで広く使われている画像形式ですが BMP形式は種類が複数存在し、データサイズも大きいので 最近では、あまり使われなくなってきました。   ファイル main.cpp sample.bmp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include stdio.h #define WIDTH 320 #define HEIGHT 240 class BMP { public  unsigned long sizeX;  //横  unsigned long sizeY; //縦  char *...
  • 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:ボタン
    基本プロジェクトに button を3つ配置します。 button2 のプロパティの Enabled を False にします。 button3 のプロパティの Cursor を Hand にします。 ビルドして実行してみましょう。 ボタン2が使用不可になっていて、ボタン3の上にマウスカーソルを 移動させるとマウスカーソルが手のカーソルに変化します。 今回も全くコードを記述せずにアプリが作成できましたね。 ちなみに、自動作成されるコードの方は以下の通りです。 MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace Project1; [STAThreadAttribute] int main(){  ...
  • .MQOを自力で読み込んでみる3(表示編)
    今回は取りあえず、頂点配列で表示してみます。 .MQO の頂点データはインデックスになっていますが UV座標のデータは インデックスにはなっていないので glDrawElements を使うとテクスチャが めちゃくちゃになってしまいます。 仕方が無いので glDrawArrays 用に配列データを作成し直して描画 する事にしました。 今回は取りあえず表示するだけという事で法線やライトなどは省略し、VBOにもしていません。 それとテクスチャに使える画像形式はPNGのみです。今の所。 今後はワイヤーフレーム表示とかにも挑戦してみます。    PNG.h #include lodepng.h //テクスチャクラス class TEXTURE{ protected  LodePNG_Decoder decoder;//デコーダ  unsigned char* buffer;//バッファ  ...
  • フラットツールバーを表示する
    素のツールバーではボタンの集合体に見えるのでフラットタイプにしてみます。 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...
  • .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...
  • .MQOを自力で読み込んでみる2(読み込み編)
    今回は読み込み編という事で、実際に .MQO ファイルを読み込んでみます。 前回の解析編で描画に使うデータがわかりましたのでそれを自作のクラスと 構造体にガンガン詰め込んでみます。 ファイルの読み込みには C++ の fstream を使おうかな?と思ったんですが、 効率があまりよくないので GLmetaseq の旧版を参考に C言語の fscanf_s と fgets を使う事にしました。 GLmetaseq の旧版ではディスプレイリストにガンガン登録して、それをサクッと表示 していますが、私的にはディスプレイリストは使わない方向で行きます。 何故かというと、ワイヤーフレーム表示とか将来的にはスキニングとかもやりたいからです。 #include string #include vector using namespace std; //3つのベクトル struct Vector...
  • 方形波の生成
    方形波を作成します。 http //www.rikakoubou.com/oshiro.htmlこちらの『オシロくん』というソフトで波形を表示させてみました。 #include stdio.h #include stdlib.h #include string.h     #define FileName square.wav //例 全長:秒 100 1サイクル:μ秒 20000 #define Cycle 5000 //1サイクル [u sec] #define Length 50 //全長 [sec] #define Max 10000 #define Min -10000   // defines #define STR_RIFF     RIFF #define STR_WAVE     WAVE #define STR_fmt     fmt #d...
  • .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:日付入力
    基本プロジェクトに 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...
  • C++/CLI:カレンダー
    基本プロジェクトに MonthCalender を配置します。 ビルドして実行してみましょう。 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 ComponentModel;  using namesp...
  • タイマーイベント
    タイマーイベントです。 コールバック関数として登録した後、関数自身が次のタイマーイベントを 設定する事で持続的にイベントが発生します。 条件判断文でイベントを終了させたり次のタイマーイベントの発生間隔を 変えたりできます。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include stdio.h #define WIDTH 320 #define HEIGHT 240 int time=0; wchar_t buf[255]; class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontna...
  • ストリーミング再生(.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)...
  • C++/CLI:データグリッドビュー
    おそらく、GUIをやる最大の目的は、このデータグリッドビューでしょう。 基本プロジェクトにデータグリッドビューを配置します。 DataGridViewタスクが表示されるので「親コンテナーにドッキングする」を選択します。 データグリッドビュー上で右クリックして「列の追加」をします。 次の3つのデータを入力して追加ボタンを押します。 名前 DelBtn 型 DataGridViewButtonColumn ヘッダーテキスト 削除 また次のデータを入力して追加ボタンを押します。 名前 SoftName 型 DataGridViewTextBoxColumn ヘッダーテキスト Name 同様に次のデータを入力して追加ボタンを押します。 名前 check 型 DataGridViewCheckBoxColumn ヘッダーテキスト 選択 データグリッドビュー上で右クリックして「列の...
  • 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...
  • 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 Componen...
  • ツールチップを表示する
    ツールチップです。一定時間ツールバーの上でマウスカーソルを停止すると現れます。 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...
  • 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 }...
  • 固定機能:スポットライト
    スポットライトです。 放射の様子がわかるように回転させています。 固定機能ではポリゴン数を多くして細分化しないと効果がわかり辛いです。 フラグメントシェーダーだとピクセル単位で処理してくれるので少ないポリゴンでも 非常に綺麗な結果が得られます。   ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //オレンジ GLfloat orange[] = { 1.0f, 0.6f, 0.0f, 1.0f }; //ライトの位置 GLfloat lightpos[]...
  • .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...
  • 法線の再設定
    さて、前回のプログラムでは法線を再設定していないので ライトを有効にするとおかしな描画になってしまいます。 ここで言う法線とは頂点法線の事なので、前回のプログラムで 求められた頂点変換後の頂点座標がそのまま使えます。 一つ注意しないといけないのは頂点法線は正規化してデータに 納めないといけない事です。   font.h #pragma once class GLFONT { public  HFONT Hfont;  HDC Hdc;  GLFONT(wchar_t *fontname, int size);  void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) {  Hfont = CreateFontW(...
  • .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...
  • @wiki全体から「CUDA:セットアップ」で調べる

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