2008年12月23日火曜日

windows 標準アプリケーション

 やっと原因が分かった.
Windows標準アプリでOpenGLがうまく動かなかった理由がやっと分かった.
テストコードは全てテクスチャを利用するコードだったのだが,
テクスチャを初期化するタイミングがまずかったようだ.
windows のデバイスコンテキストにopenglレンダリングコンテキストを設定したあとでないと
テクスチャの初期化は有効にならないということが分かった.

つまり,GL関連の初期化は全て
レンダリングコンテキストをつくった後でないと駄目だということが分かった.

GL関係の初期化と単なるリソースの初期化は別々に分ける必要があり,混ざっているものを移植するのは大変になるかもしれない.

2008年12月22日月曜日

IllustratorとPowerPoint

 イラストレータとパワーポイントで共通のフォントを使いたい.
MSフォントがWindowsUpdateのせいで使えなくなったので
HGPゴシックMでつくることにした.

2008年12月16日火曜日

fopen から fopen_s へのテンプレート

errno_t err;
if( (err = fopen_s( &fp, _T(""), _T(""))) != 0 )
{

2008年12月15日月曜日

2008年12月9日火曜日

今日やったこと

 やっとC++のクラスの継承を使う機会があった.いざ使おうと思うと
virtual修飾のメソッドがビルドエラー出したりして少し苦労した.

それからOpenGLをGLUTを使わずに書くようにしてみた.
案外あっさりGLは動いたが,後々不具合が出てきそうで怖い.

まあ,少し無駄なプログラミングをしてしまったが,たまにはいいかな.
今更Win32とかデバイスコンテキストとかOpenGLがやってる仕組みとか分かった.ま,プラスにはなったかな.

2008年12月1日月曜日

tcharが便利

ユニコードは2バイト文字のこと
マルチバイトは1バイト文字のこと

wcharはユニコード
charはマルチバイト

じゃあtcharは????
環境によってどっちにもなってくれるもの優れもの.

tcharでつくっときゃ-,誰かがつくってあるどっちかに依存しているコードに対応する
文字列を扱う関数はtchar.hに対応するものが書いてあるのでそれを使えば完璧.
これからはtchar型を使うように心がけよう

2008年11月25日火曜日

イラストレータをうまく描く秘訣

 それはあらかじめ写真を撮っておき,それをトレースして描くこと.
写真を撮れないものは仕方ないが,撮れるものは使うべきである.

撮る前に構成だけ考えてから写真を撮ること.

2008年11月21日金曜日

イラストレータに下絵を挿入する方法

 ファイルメニュー,配置,テンプレートで下絵にしたい画像を選択する

2008年11月20日木曜日

OptiTrack

 OptiTrackについてのメモ
OptiTrackがもつ値は全てデバイスで保持しているようだ.
つまり値設定プログラム
動かすためだけのプログラムというようにつくればいいような気がする.

2008年11月13日木曜日

研究

 今日がターニンポインになることを祈ります.
なぜなら具体的な最終目標が見えた気がする.
タイミングはサイヤクでしたよ.だってゼミの発表の1時間前ですから.そこから大幅な軌道修正することになり,パワポ資料もA4資料もなくなった.

でもいいよ.見通しができたから.

2008年11月10日月曜日

OpenGL テクスチャをレンダリングターゲットにする方法

 必要なヘッダGLEW
オフスクリーンレンダリングを行うために
framebuffer objectを利用する

glBindFramebuffer();でフレームバッファを切り替えることができる.
詳しくは参考サイト

2008年11月7日金曜日

クラスの静的変数を使う場合の注意

 宣言をクラスのcppのグローバルでやっておくこと.

2008年10月22日水曜日

OpenGLテクスチャの基本

 OpenGLでテクスチャをとりあえず表示するために必要な関数
初期化時:
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 128, 128, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
実行時:
glTexCoordでテクスチャ座標を指定する

これでテクスチャがはりつきます.

2008年10月16日木曜日

OpenGLのRotateの回転度数

 毎回忘れるのでメモ
glRotateに指定する回転度数は0~360度の指定

ちなみにsin, cos ( math.h) はラジアンなので0から2π

災難続き

 Hiballは直ったが,今度はプロジェクタのランプが死んだ

追記.20081113
プロジェクタのランプではなく本体が故障していた模様.交換用ランプを買って取り付けたというのに何も変わらなかったのでびっくりした.
うちには同じプロジェクタが3台あるから後2台は動くのでそれでとりあえずは動かす.

2008年10月15日水曜日

VC++ランタイムライブラリについてわかったこと

 4つのライブラリがある
デバックとついているほうがデバック用
ついてないほうがリリース用である

それぞれどっちのライブラリを使うのかについて
DLLとついているほうは動的リンクを行うためexeだけでは実行できない
ついてないほうは静的リンクを行うためexeだけで実行できるがファイルサイズは大きくなる

たいていはDLLついているほうで実行できるはず

VC++で#defineをプロパティで設定する方法

 DebugとReleaseでdefineを変更したい場合,
プロジェクトのプロパティ
C/C++のプリプロセッサタブの
プリプロセッサの定義に
追加したいインクルードファイルを追加する

Visual Studioのインテリセンス

 インテリセンスの調子が悪くなってきたときは
.slnファイルと同じディレクトリにある.ncbファイルを一度削除するといい.

2008年10月14日火曜日

ポインタのポインタをnewするinC++

 double** test = new double*[10];
 test = new double[3];
とまあこんな感じ.
アスタリスクの位置が注意

2008年10月10日金曜日

iniファイルを利用するのは推奨されない

 iniファイルの
読み込みGetPrivateProfileString
書き込みWritePrivateProfileString
は16ビットウィンドウズ時代の名残みたいなものか...
しかし,便利なので使うための方法を記載する

結局ユニコードに対応するために
TCHAR型を使う必要があり,include tchar.hする
それからどうやら上記の関数を利用するにはinclude windows.hをする必要あり.

文字列じか打ちをユニコードに対応させるために_T()でくくってやる

それから別の話題で
カレントディレクトリを知るための関数がGetCurrentDirectory()

ユニコード文字列の連結方法は_tcscat()を使う.


以上!!

2008年10月7日火曜日

OpenGLのテクスチャー!!!!!!!!!!!!!!!!!!!!

 OpenGLのテクスチャがうまく動かへん!!!!!
まじいらつく~~~~~

ネットに上がってるテクスチャが表示できるサンプルを使ってもうまく動かなかった
つまりグラフィック関係のところが俺のマシンは特殊かもしれない

だからあきらめた
OpenGLいらつく

追記.20081113
どうやらグラフィックボードによって別途GLの設定をする必要があるようだ.現在は動いている.

2008年10月6日月曜日

atokを使う

 atok30日間使用期間スタート


以上

2008年9月30日火曜日

.iniファイル利用方法

環境 Visual Stdio 2005 c++
数値を読み込んだりしたいときに便利なiniファイルについてのまとめ
ヘッダ winbase.h
書き込み用兼初期化用
WritePrivateProfileString
読み込み用
GetPrivateProfileString
読み込むときにはString型になるのでそのあとに
自分の利用する型に変換して利用する

読み込む時にはデフォルト値を指定することができ、非常に便利

2008年9月16日火曜日

Windows 再インストールにおける ハードディスクフォーマット

最初のハードディスクフォーマットをクイックフォーマットにするか
完全フォーマットにするかの判断について

ハードディスクが目的のフォーマットになっていると分かっていれば
クイックフォーマットでも大丈夫である

パーティションを変更や新しく作った場合は必ず完全フォーマットである

2008年9月11日木曜日

イラストレータで任意の形にマスク処理する方法

 環境AdobeIllustrator9.0
レイヤを作成する
その同一レイヤの中に任意のマスクしたいパスを作成する
それから被マスクとなるオブジェクトを作成する

そしてレイヤウィンドウの中でそのレイヤを選択する
レイヤウィンドウの下にあるマスク関係のオプションを選択すると完成。。。

プリンターの両面印刷の設定

 プリンターが両面印刷できるものなのに
いざ印刷するときには両面を選択できないことがある。
その原因はそもそものプリンターの設定が悪いらしい。

というわけで解決方法はプリンタの設定項目の環境設定にある
両面印刷ユニット

これをありにすればアプリケーション側で両面印刷ができるようになるみたいだ。

2008年9月10日水曜日

1バイト文字と2バイト文字

 UNICODE対応と非対応はプログラムを組むにあたってたは
悩ましい問題である。
うぜっ

Visual Studio の カレントディレクトリ

 環境:Visual Stdio2005 C++ win32プログラム
ファイルを扱う際の実行中のカレントディレクトリについて調べた。

・ソリューションを開き、プログラムを作成しているときの実行時はvcprojファイルがある場所
・出来上がった実行ファイルデバック用を起動した時はそのexeがある場所
・同じくリリースファイルを起動した時はそのexeがある場所

となる。

2008年8月26日火曜日

ダイアログボックス作成

 win32APIを使ったダイアログボックス作成方法について
CreateDialog( インスタンスハンドル, MAKEINTRESOURCE(ダイアログボックスID), ウィンドウハンドル, ダイアログ関数用のコールバック関数ポインタ)
これで作成
その後にShowWindowなどをしておくと表示されて一安心。

メッセージループでは
ダイアログ用のコールバックを取得するために、
メッセージを取得した後に
if( ダイアログウィンドウハンドルの存在可否 && IsDialogMessage(ダイアログハンドル, &msg))
{
continue;
}
で割り込んでおく必要がある。

終了時には
DestroyWindow(ダイアログウィンドウハンドル)
でダイアログを消去し、ハンドルをNULLにしておくこと。

以上、3つがダイアログボックスを作成する際のポイントである。

2008年8月25日月曜日

Visual Studio 古いコードへのエラー対策

ソースコードの先頭に下の1行を加える。

#pragma warning(disable : 4996)

以上!!

2008年8月1日金曜日

libとdllの作成方法

 環境はVisual Studio 2005 VC++。
libを作成したい場合は構成プロパティ全般の
構成の種類をlibにする
main関数が必要なわけではない。
ビルドしてエラーが出なければlibファイルが作成される
利用する側では.hと.libを使う。
参照設定にlibを作成したプロジェクトを入れてしまえば勝手にリンクしてくれる
ヘッダは自分で読みにいかなければならない。


それからdllを作成したい場合。
libよりは少しややこしいが、まず構成プロパティ全般の
構成の種類をdllにする。
同様にmain関数は必要ない。

外部から利用したい関数やクラスの前に
__declspec(dllexport)という宣言を加える
具体的には
__declspec(dllexport) 関数名();
class __declspec(dllexport) クラス名{};
という具合。

すると同じく.dllと.libができあがる
利用する側では
同じく参照設定をする
それから.dllファイルを
利用するプロジェクトの実行ファイルと同じフォルダに置く必要がある。

libはプログラム作成時に実行ファイルの中に組み込む。
dllは組み込まないので実行ファイルと対で必要になるが
dllだけ入れ替えることができる。

用途によって使い分ければいいだろう。。。

Windowsでマルチスレッドプログラミング

 環境はVisualStudio2005VC++。
スレッドを起動するための関数_beginthread
終了はスレッド内で_endthreadを呼ぶ。

以上。

2008年7月30日水曜日

Hiballの前進

 今日Hiballの販売店(株)クレアクト様に故障対応の連絡をした。
企業と連絡を取るのは就職活動以来なので
少しなつかしい。。。

早くハイボールが復活することを祈るばかり。。。

2008年7月29日火曜日

wiiリモコンが認識しない

 wiiリモコンはbluetoothで通信を行うのだが
パソコンにbluetoothアダプタをさしてしばらくは認識していたのに

何をやっても認識しなくなった。

ありえん!マジむかつく!!

パソコン不具合解消

 突然CPUが100パーセントになる現象はしばらく起こっていない
オーディオドライバのアンインストールに加えて
仮想ドライバ Daemon tool の再インストールも行った。

どっちが原因だったか分からないが
パソコンは快調に動いており満足だ。

研究用のマシンが今度は死んでしまった。
ハードディスクエラーらしいが
中身のバックアップだけ行い、
再インストールをしなければならない。

2008年7月28日月曜日

停滞中

 クォータニオン、OpenGL、座標あわせなど等、、、
体調悪いし、眠いし、うまくいかない。

ゼミに向けてなにか進めないと。。。

2008年7月25日金曜日

Hiballの現状

 LEDが全く点灯しないため、業者に見てもらうことに決定。
Hiballはサーバークライアントシステムであり、
サーバー、クライアント双方が起動しないと動かない。

そこで擬似サーバーをつくり、クライアントのみで動かせる
テスト環境を構築することにする。

必要そうなプログラミングはマルチスレッドくらい。
あとネットワーク通信もつくりたい。

2008年7月24日木曜日

WiiYourself!とWiimoteLib

 c++で開発する用がWiiYourself!でc#で開発する用がWiimoteLibらしい。
ライブラリはダウンロードできたが、wiiリモコンが必要だ。。。

それからC++で開発するにはDDKというものが必要らしい。
よくわからん。

2008年7月23日水曜日

パソコン不具合

 パソコンの調子が悪い原因がよくわからない。
コア2デュオで片方のCPUが突然使用率100パーセントになったり
またはどっちのCPUも100パーセントになることもある

すぐさま電源を落とそうとすると、たいていオーディオ関連のアプリケーションが
応答しないのですぐに終了しますかと聞かれる。

おそらく原因はオーディオのドライバなんだと思うのだが、
ドライバは最新のものにしても駄目だし

とりあえず、オーディオドライバは完全に除去して
現在動かしている。

また不具合が出たらどうするかな。。。

効率よくやっていくか。。。

 研究室にブログホームページを自作しようと思ったが、
見てのとおりGoogleのブログを使うことにした。

ここでは研究についてのメモを書いていく予定である。

今年卒業に向けて日々がんばるぜ!!