11/07/17[sun] - コピペメモ
 とあるStepManiaスレでの、StepMania5の経緯

47 名無しさんの野望sage2011/06/02(木) 23:28:15.41ID:AZui6j3k(1)
 中心開発者クリスら3人「4alpha5から全然開発が先に進まない!3.9+3.95で4にしちゃえ!」
 中心開発協力者AJ/shakesoda/Midiman他「何それふざけんな。俺達はsm-sscで開発を続ける」
 クリスら3人「取敢えず4beta公開したけど中々開発が進まない…」
 AJら3人「sm-sscは順調順調♪」
 クリスら3人「ぐ…どうすればいいんだ…」
 AJら3人「遂に5p1が完成したぜ!」
 クリスら3人「……」

 正直、今はどちらがステマニの中心開発者か分からないな。

48 名無しさんの野望sage2011/06/03(金) 06:16:35.85ID:6D22lCyr(1)
 4系 (本家?)と5系(sm-ssc)に分裂するのか

49 名無しさんの野望sage2011/06/03(金) 13:14:14.32ID:LposipB/(1)
 全日本と新日本みたいだな
 仲良く統一すればいいのに…

50 名無しさんの野望sage2011/06/03(金) 15:02:39.33ID:HotYKH15(1)
 今更統一は難しいと思うよ
 XMLに統一しよう!→ふざけるなLuaだろ!
 →よし分かった新しい規格にしよう→ユーザー「またかよ^p^」



11/07/17[sun] - オープンキャンパス
 なんというか,
 最上階(5階)故なのか,もともとそうなのか
 あまり人が来なかったのでなんとなーくで終わっちゃいました

 Kinectも潜在的なバグが潜んでる可能性もありましが,とりあえずまともには動いててくれたのでなにより
 再来週もオープンキャンパスあるけど,Kinectはひとまず完了ってことで

 次は回路作業や~
 エレドラ制作企画始めるでー
 その前段階で,まずはMAXIMのアンプ&ローパスフィルタの回路
 パターン図はもう出来てるんで,火曜に行ければ削りに行くかな


【DWI】
 アケコンが手元になくなってから作る気力は無かったんですが
 これきいてたら脳裏に矢印がどんどん流れてきたので勢いで作っちゃいました(←
 
 ※ 動画の再生にBGAnimationを使ってるのでStepmania5系だと正常に再生されません。
 今後対応するのかな・・・・?



11/07/06[wed] - Kinect生活6日目
 このままでは使いにくいだろうってことでKinectとDxlibをひっくるめてクラス化してみました
 本当は描画部分とか分けた方が良いんだろうけどひっくるめちゃいました
 で,
 実際にゲームのコア部分を書こうとして躓いて今に至るわけです.
 「どう管理・構成したらいいものか・・・」

 クラス化してオブジェクト指向にしたのはいいものの,肝心の某が
 クラス構築法をかじった程度にしか知らないからそう簡単にできるわけでもなく
 デザインパターンとかも含めて勉強直さないといけないな・・・

 オブジェクト指向は用意されたものを使うだけなら簡単で楽なんですが
 自身で設計して構築するとなると,某の今のレベルでは・・・

 まぁ公開はオープンキャンパス程度ですし,汎用性・拡張性無視してとりあえず作ってしまえ~って程度なら
 すぐに形にはできそうですけど,
 そうなると高専のオープンキャンパスRPGの二の舞・・・
 まるで成長していないのでこれを期にちゃんと勉強しなくては
 (将来的にもっと大きい規模のを作らないといけないし・・)

 こりゃ,オープンキャンパスまでに間に合うか!?



11/07/04[mon] - Kinect生活5日目
 今日はトラッキングの実装ですぜ
 で,とりあえず出来たんですが(Microsoftのpdf見ながら)
 なんか時間立つと固まるんです
 まさかと思ってタスクマネージャで確認したら毎秒60MBで増えていくんです
 「Kinectさん,お腹減ってるからってそんなにメモリ食わないでくださいっ!!!」
 と,思って色々錯誤してたけど,結局DxLibのほうでした.俺が悪かったw;;;;

 ということで,
 とりあえず,前回のソースは「#include <iostream>」が抜けてたので「ERROR_CHECK」の所で引っかかります(←
 で,メモリ食いの原因はというと
 「GrHandle = CreateGraphFromBaseImage(&BaseImage);」
 の所.
 要は,ここでひたすら作り続けちゃってるわけです
 で,
 前回「この方法は使用不可」って言ってましたけど,使用不可なんじゃなくて
 描画してなかっただけなんです
 はい「DrawGraph」です.
 2回目以降はグラフィックハンドルへ映像を転送,なんて言うもんだからてっきりその関数で描画してるものかと勘違いしてたんです
 サイトの方よく見たら,ちゃんと描画関数ありました(←

 ってことで,現時点のソースになります.
 僭越ながら某のちゃっちぃコードでも参考になれば幸いです.

//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
// MSR_NuiApi.hの前にWindows.hをインクルードする
#include <Windows.h>
#include <MSR_NuiApi.h>
#include "DxLib.h"

//---------------------------------------------------------------------------
// Globals
//---------------------------------------------------------------------------
#define WINDOW_SIZE_X 640
#define WINDOW_SIZE_Y 480



void FirstDrawImage(int *GrHandle, HANDLE StreamHandle, BASEIMAGE *BaseImage){
        HRESULT hr;

        // カメラデータの取得
        const NUI_IMAGE_FRAME *ImageFrame = NULL;
        hr = NuiImageStreamGetNextFrame( StreamHandle, 0, &ImageFrame );

        // 画像データの取得
        KINECT_LOCKED_RECT rect;
        ImageFrame->pFrameTexture->LockRect( 0, &rect, 0, 0 );                           // IDirect3DTexture9 のLockメソッドと同じ?

        // Dxlibで使用する画像データの構造体設定
        BaseImage->GraphData = rect.pBits;
        BaseImage->Pitch = rect.Pitch;                                                          // ピッチは横1ラインあたりのByte数

        // カメラデータの解放
        hr = NuiImageStreamReleaseFrame( StreamHandle, ImageFrame );
        ImageFrame->pFrameTexture->UnlockRect(0);

        // 最初の場合はグラフィックハンドルの作成と映像の転送を一度に行う
        *GrHandle = CreateGraphFromBaseImage( BaseImage ) ;
}


inline void DrawImage(int GrHandle, HANDLE StreamHandle, BASEIMAGE *BaseImage){
        HRESULT hr;

        // カメラデータの取得
        const NUI_IMAGE_FRAME *ImageFrame = NULL;
        hr = NuiImageStreamGetNextFrame( StreamHandle, 0, &ImageFrame );

        // 画像データの取得
        KINECT_LOCKED_RECT rect;
        ImageFrame->pFrameTexture->LockRect( 0, &rect, 0, 0 );                           // IDirect3DTexture9 のLockメソッドと同じ?

        // Dxlibで使用する画像データの構造体設定
        BaseImage->GraphData = rect.pBits;
        BaseImage->Pitch = rect.Pitch;                                                          // ピッチは横1ラインあたりのByte数

        // カメラデータの解放
        hr = NuiImageStreamReleaseFrame( StreamHandle, ImageFrame );
        ImageFrame->pFrameTexture->UnlockRect(0);

        // 2回目以降はグラフィックハンドルへ映像を転送
        ReCreateGraphFromBaseImage( BaseImage, GrHandle ) ;

        DrawExtendGraph(0,0, 640,480, GrHandle, true);
}



//---------------------------------------------------------------------------
// Main
//---------------------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
        HRESULT hr;

        // *************************
        // DXライブラリ初期化
        // *************************
        ChangeWindowMode( true ) ;                                                              // ウインドウモードに変更
        SetUseDirectDrawDeviceIndex( 1 ) ;                                                      // 使用する DirectDraw デバイスのインデックスを設定する
        SetAlwaysRunFlag( true );                                                               // ウインドウがアクティブではない状態でも処理を続行
        SetWaitVSyncFlag( false );                                                              // 垂直同期
        SetGraphMode( WINDOW_SIZE_X , WINDOW_SIZE_Y , 32 ) ;    // 画面モードの変更
        if( DxLib_Init() == -1 ){                                                               // DXライブラリ初期化処理
                printfDx("[Dxlib]初期化に失敗しました\n");
                WaitKey();
                return -1;
        }
        SetTransColor( 0 , 0 , 0 ) ;                                                            // 透過色を変更
        SetFontSize( 32 ) ;                                                                     // 描画する文字列のサイズを設定

        printfDx("[Dxlib]Display:%d\n",GetDirectDrawDeviceNum() );// モニタの数を取得

        int VideoGrHandle = -1;                                                                 // DXライブラリのグラフィックハンドル
        int DepthGrHandle = -1;                                                                 // DXライブラリのグラフィックハンドル
        BASEIMAGE       BaseVideoImage;                                                         // DXライブラリ内部で画像を扱うために使用している構造体(カラーカメラ用)
        BASEIMAGE       BaseDepthImage;                                                         // (深さカメラ用)

        BaseVideoImage.Width = 640;
        BaseVideoImage.Height = 480;

        BaseDepthImage.Width = 320;
        BaseDepthImage.Height = 240;


        // カラーフォーマットは変化しないので最初に設定
        CreateARGB8ColorData( &BaseVideoImage.ColorData );              // キネクトからのデータは8bit*4なんでCreateFullColorDataじゃ駄目っぽい
        DxLib::CreateGrayColorData( &BaseDepthImage.ColorData );        // 深度データはようわからん(←
        
        BaseDepthImage.ColorData.ColorBitDepth = 16;
        BaseDepthImage.ColorData.PixelByte = 2;
        
        BaseDepthImage.ColorData.RedWidth = 0;
        BaseDepthImage.ColorData.GreenWidth = 0;
        BaseDepthImage.ColorData.BlueWidth = 16;
        
        BaseDepthImage.ColorData.RedLoc = 0;
        BaseDepthImage.ColorData.GreenLoc = 0;
        BaseDepthImage.ColorData.BlueLoc = 16;
        /*
        BaseDepthImage.ColorData.RedMask = 255;
        BaseDepthImage.ColorData.GreenMask = 255;
        BaseDepthImage.ColorData.BlueMask = 255;
        */
        // ミップマップではないので0
        BaseVideoImage.MipMapCount = 0 ;
        BaseDepthImage.MipMapCount = 0 ;

        enum { FPS = 30 };
        long long OldTime = 0 ;                                                                 // FPS計測用:1フレーム前の時間
        long long NowTime = 0;                                                                  // FPS計測用:現在時間
        double ShowTime = 0;                                                                    // FPS計測用:表示用変数

        long long int FlameCount = 0;                                                           //開始からのフレームカウンタ
        long long int StartTime;                                                                //開始時間
        long long int Ideal = 0;


        // *************************
        // Kinect初期化
        // *************************
        int count = 0;
        MSR_NUIGetDeviceCount( &count );                                                    // Kinectの接続数を確認
        printfDx( "[Kinect] Kinect count: %d\n" , count ) ;

        // 宣言
        HANDLE ImageEvent               = ::CreateEvent( 0, TRUE, FALSE, 0 );
        HANDLE SkeletonEvent    = ::CreateEvent( NULL, TRUE, FALSE, NULL );
        HANDLE DepthEvent               = ::CreateEvent( NULL, TRUE, FALSE, NULL );
        HANDLE VideoStreamHandle= NULL;
        HANDLE DepthStreamHandle= NULL;


        // 初期化                                          // 深さとユーザー                                                              // スケルトン                                                // カメラ
        hr = NuiInitialize( NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_SKELETON | NUI_INITIALIZE_FLAG_USES_COLOR);
        if( FAILED(hr) ){
            printfDx("[Kinect] 初期化に失敗しました\n");
        }

        hr = NuiSkeletonTrackingEnable( SkeletonEvent, 0 );
        if( FAILED(hr) ){
            printfDx("[Kinect] トラッキング処理の初期化に失敗しました\n");
        }

        // カメラハンドルの取得
        hr = NuiImageStreamOpen( NUI_IMAGE_TYPE_COLOR, NUI_IMAGE_RESOLUTION_640x480, 0, 2, ImageEvent, &VideoStreamHandle );
        if( FAILED( hr ) ){
            printfDx("[Kinect] ビデオカメラハンドルの取得に失敗しました\n");
        }

        // 赤外線カメラハンドルの取得
        hr = NuiImageStreamOpen( NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX, NUI_IMAGE_RESOLUTION_320x240, 0, 2, DepthEvent, &DepthStreamHandle );
        if( FAILED(hr) ){
            printfDx("[Kinect] デプスハンドルの取得に失敗しました\n");
        }





        // 最初にグラフィックハンドルの作成を行う
        WaitForSingleObject( ImageEvent, INFINITE );    // データの更新を待つ
        WaitForSingleObject( DepthEvent, INFINITE );
        FirstDrawImage(&VideoGrHandle, VideoStreamHandle, &BaseVideoImage);
        FirstDrawImage(&DepthGrHandle, DepthStreamHandle, &BaseDepthImage);


        printfDx("\nPress Any Key to Start\n");
        WaitKey();

        SetDrawScreen( DX_SCREEN_BACK ) ;                                               // グラフィックの描画先を裏画面にセット
        StartTime = GetNowHiPerformanceCount();                                         // FPS計測 開始時間

        // Main loop
        while(1){
                // 画面に描かれているものを一回全部消す
                ClsDrawScreen() ;
                clsDx() ;
                FlameCount++;

                // データの更新を待つ
                WaitForSingleObject( ImageEvent, INFINITE );
                WaitForSingleObject( DepthEvent, INFINITE );

                // カメラデータを描画
                DrawImage(VideoGrHandle, VideoStreamHandle, &BaseVideoImage);   // RGBカメラ
                DrawImage(DepthGrHandle, DepthStreamHandle, &BaseDepthImage);   // 深度カメラ


                
                //トラッキング
                NUI_SKELETON_FRAME SkeletonFrame;
                hr = ::NuiSkeletonGetNextFrame( 0, &SkeletonFrame );
                for(int i=0; i<NUI_SKELETON_COUNT; i++){
                        if( SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED ){
                                printfDx("found NO = %d\n",i);

                                NuiTransformSmooth(&SkeletonFrame, NULL);                               // smoothing filter to the skeleton data
                                float x=0,y=0;
                                for(int j=0; j<NUI_SKELETON_POSITION_COUNT; j++){
                                        ::NuiTransformSkeletonToDepthImageF( SkeletonFrame.SkeletonData[i].SkeletonPositions[j], &x, &y);
                                        DrawCircle((int)(x*640), (int)(y*480), 5, 0xffffff, true);
                                }
                        }
                }



                NowTime = GetNowHiPerformanceCount();
                // FPSカウンター
                if(FlameCount%FPS == 0){
                                ShowTime = (double)(FPS * 1000000) / (double)(NowTime-OldTime);
                                OldTime = NowTime;
                }
                printfDx( "%f FPS\n" , ShowTime ) ;

                ScreenFlip();                                                                           // 1フレーム処理結果の描画
                if( ProcessMessage() < 0 ) break;                                                    // Windows 特有の面倒な処理をDXライブラリにやらせる        // -1 が返ってきたらループを抜ける
                if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break;                                            // もしESCキーが押されていたらループから抜ける
        }

        NuiShutdown();                                                  // 終了処理
        DxLib_End() ;                                                   // DXライブラリ使用の終了処理
        return 0 ;                                                      // ソフトの終了 
}

 さて,Depthの描画ですが,結構無理やりです;;;
 Depthデータは1ピクセル2バイトデータノクロ画像(符号付16bit整数1ch)モで,かつデータ範囲が850~4000の範囲で検出するみたいです.
  参考:kinectセンサーから任意の範囲の深度マップ抽出/(明日とロボット)
 それをうまく表示するようにDxlib側のカラーデータを色々弄った結果,これでとりあえずそれっぽく表示されたのでいいかな,と

 描画回りは関数化したほうがスマートっぽかったので関数化しました.
 ただ,最初の1フレーム目の描画はグラフィックハンドルを作成しないといけないので,毎回if文で分岐させるより,別で作った方が良いかなと思って分けました.

 問題点としては,イメージ画像と深度画像が同時に表示できません;;;
 描画の透過フラグをtrueにして,下にRGB映像,上にDepth映像を重ねてDepth映像の黒い部分は透過して下が見える・・・はずなんだけど,RGB利像が表示されない・・・
 透過をfalseにするとRGB映像が表示される・・・何故だ!?
 原因究明は・・・次回でいいや;;;

 あとは,付け焼刃で乗っけたようなトラッキングの部分ですが,
 トラッキング開始と同時にフレームレートが落ちます・・・
 単なるループ文が多いからなのか,それとも別に原因があるのか
 原因ははっきりしませんが,実装上ではユーザーを選択・限定させるので,NUI_SKELETON_COUNT回数(20回)のループは小t略できそうです.

 今日はこんなもんで.
 もし,アドバイスとか何か意見があればTwitterでも拍手でも教えていただければうれしいです.


 実行結果
 



11/07/02[sat] - Kinect生活4日目
 いつの間にか7月突入
 オープンキャンパスまであと2週間しかないので今日はKinectを進めることにした

 せっかく公式SDKが出てるので導入してみたものの・・・英語ばっかやし
 C#+XNAで作ってる人も居るけど,C#はなぁ・・・

 まだ先駆者が少ない様子・・・
 ゲーム作るんだったら,今の自分のスキルで作れそうなものといえばDXライブラリを使ったもの
 とはいえ,Google先生に聞いてもKinect+Dxlibでコード書いてる人がいないっ!
 さてどうしたものか
 C#に移行してコピペ生活になるのは嫌やし,
 Kinect SDKで,OpenNIを使えるようにするラッパーとかなんとかもあるみたいやけど,
 変換ばっかでなんか嫌になりそうやったからSDKのAPIだけでなんとかできないか頑張ってみた

 とりあえずとりあえず参考になってるのは
 ・かおるんダイアリー C++とOpenCVでKinect
 ・OpenCVの画像データをDXライブラリで描画するには?/(DXライブラリ置き場の掲示板)

 OpenCV使ってる人は結構いるんだな(
とはいっても先駆者さんのコピペコードばっか溢れてるけど

 ということで,とりあえずできたものを

// MSR_NuiApi.hの前にWindows.hをインクルードする
#include <Windows.h>
#include <MSR_NuiApi.h>
#include "DxLib.h"

#define ERROR_CHECK( ret )  \
    if ( ret != S_OK ) {    \
        std::cout << "failed " #ret " " << ret << std::endl;    \
        exit( 1 );          \
    }

#define WINDOW_SIZE_X 640
#define WINDOW_SIZE_Y 480


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
        // DXライブラリ初期化
        ChangeWindowMode( true ) ;                                                      // ウインドウモードに変更
        SetWaitVSyncFlag( false );                                                      // 垂直同期
        SetGraphMode( WINDOW_SIZE_X , WINDOW_SIZE_Y , 32 ) ;                            // 画面モードの変更
        if( DxLib_Init() == -1 ) return -1;                                             // DXライブラリ初期化処理
        SetTransColor( 0 , 0 , 0 ) ;                                                    // 透過色を変更
        SetFontSize( 32 ) ;                                                             // 描画する文字列のサイズを設定

        enum { FPS = 30 };
        long long OldTime = 0 ;                                                         // FPS計測用:1フレーム前の時間
        long long NowTime = 0;                                                          // FPS計測用:現在時間
        double ShowTime = 0;                                                            // FPS計測用:表示用変数

        long long int FlameCount = 0;                                                   // 開始からのフレームカウンタ
        long long int StartTime = GetNowHiPerformanceCount();   //開始時間
        long long int Ideal = 0;        

        int GrHandle = -1;                                                              // DXライブラリのグラフィックハンドル
        BASEIMAGE BaseImage;                                                            // DXライブラリ内部で画像を扱うために使用している構造体

        // カラーフォーマットは変化しないので最初に設定
        CreateARGB8ColorData( &BaseImage.ColorData );                                   // キネクトからのデータは8bit*4なんでCreateFullColorDataじゃ駄目っぽい

        // ミップマップではないので0
        BaseImage.MipMapCount = 0 ;


        // 初期化
        ERROR_CHECK( ::NuiInitialize( NUI_INITIALIZE_FLAG_USES_COLOR ) );

        // カメラハンドルの取得
        HANDLE imageEvent = ::CreateEvent( 0, TRUE, FALSE, 0 );
        HANDLE streamHandle = 0;
        NUI_IMAGE_RESOLUTION resolution = NUI_IMAGE_RESOLUTION_640x480;
        ERROR_CHECK( ::NuiImageStreamOpen( NUI_IMAGE_TYPE_COLOR, resolution, 0, 2, imageEvent, &streamHandle ) );

        // 画面サイズを取得
        DWORD x = 0, y = 0;
        ::NuiImageResolutionToSize( resolution, x, y );



        SetDrawScreen( DX_SCREEN_BACK ) ;                                               // グラフィックの描画先を裏画面にセット

        // Main loop
        while(1){
                // 画面に描かれているものを一回全部消す
                ClsDrawScreen() ;
                clsDx() ;
                FlameCount++;

                // データの更新を待つ
                ::WaitForSingleObject( imageEvent, INFINITE );

                // カメラデータの取得
                CONST NUI_IMAGE_FRAME *imageFrame = 0;
                ERROR_CHECK( ::NuiImageStreamGetNextFrame( streamHandle, 0, &imageFrame ) );

                // 画像データの取得
                KINECT_LOCKED_RECT rect;
                imageFrame->pFrameTexture->LockRect( 0, &rect, 0, 0 );

                /*
                // ピクセル単位で描画
                //BYTE *bitPointer=(BYTE *)rect.pBits;
                char *imageData = (char*)rect.pBits;        // pointer to aligned image data
                for (int t = 0; t < 480; t++){
                        for (int k = 0; k < 640; k++){
                                DrawPixel(k, t, GetColor( imageData[rect.Pitch * t + 4*k + 2],
                                                          imageData[rect.Pitch * t + 4*k + 1],
                                                          imageData[rect.Pitch * t + 4*k + 0]));
                        }
                }
                */

                // Dxlibで使用する画像データの構造体設定
                BaseImage.GraphData = rect.pBits;
                BaseImage.Width = 640;
                BaseImage.Height = 480;
                BaseImage.Pitch = rect.Pitch;                                                   // ピッチは横1ラインあたりのByte数
                
                /*      この描画方法は使用不可
                // グラフィックハンドルを作成しているかどうかで処理を分岐
                if( GrHandle == -1 ){
                        // 最初の場合はグラフィックハンドルの作成と映像の転送を一度に行う
                        GrHandle = CreateGraphFromBaseImage( &BaseImage );
                }else{
                        // 2回目以降はグラフィックハンドルへ映像を転送
                        ReCreateGraphFromBaseImage( &BaseImage, GrHandle );
                }
                */
                GrHandle = CreateGraphFromBaseImage(&BaseImage);
                DrawGraph(0,0,GrHandle,false);


                ERROR_CHECK( ::NuiImageStreamReleaseFrame( streamHandle, imageFrame ) );        // カメラデータの解放
                

                NowTime = GetNowHiPerformanceCount();
                // FPSカウンター
                if(FlameCount%FPS == 0){
                        ShowTime = (double)(FPS * 1000000) / (double)(NowTime-OldTime);
                        OldTime = NowTime;
                }
                printfDx( "%f FPS\n" , ShowTime ) ;

                ScreenFlip();                                                                   // 1フレーム処理結果の描画
                if( ProcessMessage() < 0 ) break;                                               // Windows 特有の面倒な処理をDXライブラリにやらせる        // -1 が返ってきたらループを抜ける
                if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break;                                    // もしESCキーが押されていたらループから抜ける
        }

        NuiShutdown();                          // 終了処理
        DxLib_End() ;                           // DXライブラリ使用の終了処理
        return 0 ;                              // ソフトの終了 
}

 HTMLでのコードの貼っ付けって面倒いなw
 ほかのサイトさんとかはどうしてるんやろうと思って調べてみたら、こんなんあったw→ブログ用プログラムコードの整形JavaScript
 ってことで早速実装
 ブログ用って言ってるけど問題ナッシング
 しかも前のHP改造で過去ログ他大体を共通ヘッダファイル仕様化してるからコード定義も1箇所だけで楽々w
 でもちょっと整形ずれるけど、まぁ仕方ないかな

 さて、
 参考元のCreateFullColorDataじゃ駄目だったところは,キネクトからの画像データはちょっと余計なものが入ってるようで
 最初は映し出せてもなんか変で,でもカラーデータの定義のあたりが原因な気がしたから適当に似たようなCreateなんちゃらColorData関数ぷち込んでみたら出来たwww
 で,ARGBでググってみて,ここによると
 >> ちなみにxRGBは1ピクセルあたりに赤、緑、青、8bit(256段階)ずつのデータ領域を持たせ、さらに8bit余分な領域を持たせる方式で、ある一部のグラフィックボードが独自のデータをそこに納めない限りはただのごみ領域となるらしく、aRGBはそのごみ領域を透明度のデータ領域として割り当てる方式だそうな。
 なるほどなるほど,Kinectの場合はそこに距離の深度がが入りそうな気がするけど,また別の話かな?

 あと,グラフィックハンドルを作成しているかどうかで処理を分岐 の所もそのままじゃ画面真っ黒で描画されてなかったので
 毎回ハンドル作成するようにしたら描画できました.

 次は骨格トラッキングやな・・・


 さて,某をきっかけにKinect+Dxlibのプログラマが増えてくれるといいな!