NetworkDriveHelper::~NetworkDriveHelper() { Cleanup(); }
int main(int argc, char **argv) { printf("enter demo main\n"); fflush(stdout); putenv("POCL_VERBOSE=1"); putenv("POCL_DEVICES=basic"); putenv("POCL_LEAVE_TEMP_DIRS=1"); putenv("POCL_LEAVE_KERNEL_COMPILER_TEMP_FILES=1"); putenv("POCL_TEMP_DIR=pocl"); putenv("POCL_CACHE_DIR=pocl"); putenv("POCL_WORK_GROUP_METHOD=spmd"); if(argc >= 2){ printf("argv[1]:%s:\n",argv[1]); if(!strcmp(argv[1], "h")) putenv("POCL_WORK_GROUP_METHOD=spmd"); if(!strcmp(argv[1], "c")) putenv("POCL_CROSS_COMPILE=1"); } if(argc >= 3){ printf("argv[2]:%s:\n",argv[2]); if(!strcmp(argv[2], "h")) putenv("POCL_WORK_GROUP_METHOD=spmd"); if(!strcmp(argv[2], "c")) putenv("POCL_CROSS_COMPILE=1"); } //putenv("LD_LIBRARY_PATH=/scratch/colins/build/linux/fs/lib"); //putenv("LTDL_LIBRARY_PATH=/scratch/colins/build/linux/fs/lib"); //lt_dlsetsearchpath("/scratch/colins/build/linux/fs/lib"); //printf("SEARCH_PATH:%s\n",lt_dlgetsearchpath()); cl_platform_id platforms[100]; cl_uint platforms_n = 0; CL_CHECK(clGetPlatformIDs(100, platforms, &platforms_n)); printf("=== %d OpenCL platform(s) found: ===\n", platforms_n); for (int i=0; i<platforms_n; i++) { char buffer[10240]; printf(" -- %d --\n", i); CL_CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_PROFILE, 10240, buffer, NULL)); printf(" PROFILE = %s\n", buffer); CL_CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION, 10240, buffer, NULL)); printf(" VERSION = %s\n", buffer); CL_CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, 10240, buffer, NULL)); printf(" NAME = %s\n", buffer); CL_CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, 10240, buffer, NULL)); printf(" VENDOR = %s\n", buffer); CL_CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS, 10240, buffer, NULL)); printf(" EXTENSIONS = %s\n", buffer); } if (platforms_n == 0) return 1; cl_device_id devices[100]; cl_uint devices_n = 0; // CL_CHECK(clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 100, devices, &devices_n)); CL_CHECK(clGetDeviceIDs(platforms[0], CL_DEVICE_TYPE_GPU, 100, devices, &devices_n)); printf("=== %d OpenCL device(s) found on platform:\n", devices_n); for (int i=0; i<devices_n; i++) { char buffer[10240]; cl_uint buf_uint; cl_ulong buf_ulong; printf(" -- %d --\n", i); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(buffer), buffer, NULL)); printf(" DEVICE_NAME = %s\n", buffer); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_VENDOR, sizeof(buffer), buffer, NULL)); printf(" DEVICE_VENDOR = %s\n", buffer); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, sizeof(buffer), buffer, NULL)); printf(" DEVICE_VERSION = %s\n", buffer); CL_CHECK(clGetDeviceInfo(devices[i], CL_DRIVER_VERSION, sizeof(buffer), buffer, NULL)); printf(" DRIVER_VERSION = %s\n", buffer); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(buf_uint), &buf_uint, NULL)); printf(" DEVICE_MAX_COMPUTE_UNITS = %u\n", (unsigned int)buf_uint); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(buf_uint), &buf_uint, NULL)); printf(" DEVICE_MAX_CLOCK_FREQUENCY = %u\n", (unsigned int)buf_uint); CL_CHECK(clGetDeviceInfo(devices[i], CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(buf_ulong), &buf_ulong, NULL)); printf(" DEVICE_GLOBAL_MEM_SIZE = %llu\n", (unsigned long long)buf_ulong); } if (devices_n == 0) return 1; cl_context context; context = CL_CHECK_ERR(clCreateContext(NULL, 1, devices+1, &pfn_notify, NULL, &_err)); cl_command_queue queue; queue = CL_CHECK_ERR(clCreateCommandQueue(context, devices[1], CL_QUEUE_PROFILING_ENABLE, &_err)); cl_kernel kernel = 0; cl_mem memObjects[2] = {0,0}; // Create OpenCL program - first attempt to load cached binary. // If that is not available, then create the program from source // and store the binary for future use. std::cout << "Attempting to create program from binary..." << std::endl; cl_program program = CreateProgramFromBinary(context, devices[1], "kernel.cl.bin"); if (program == NULL) { std::cout << "Binary not loaded, create from source..." << std::endl; program = CreateProgram(context, devices[1], "kernel.cl"); if (program == NULL) { Cleanup(context, queue, program, kernel, memObjects); return 1; } std::cout << "Save program binary for future run..." << std::endl; if (SaveProgramBinary(program, devices[1], "kernel.cl.bin") == false) { std::cerr << "Failed to write program binary" << std::endl; Cleanup(context, queue, program, kernel, memObjects); return 1; } } else { std::cout << "Read program from binary." << std::endl; } printf("attempting to create input buffer\n"); fflush(stdout); cl_mem input_buffer; input_buffer = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_READ_ONLY, sizeof(double)*NUM_DATA, NULL, &_err)); printf("attempting to create output buffer\n"); fflush(stdout); cl_mem output_buffer; output_buffer = CL_CHECK_ERR(clCreateBuffer(context, CL_MEM_WRITE_ONLY, sizeof(double)*NUM_DATA, NULL, &_err)); memObjects[0] = input_buffer; memObjects[1] = output_buffer; double factor = ((double)rand()/(double)(RAND_MAX)) * 100.0;; printf("attempting to create kernel\n"); fflush(stdout); kernel = CL_CHECK_ERR(clCreateKernel(program, "daxpy", &_err)); printf("setting up kernel args cl_mem:%lx \n",input_buffer); fflush(stdout); CL_CHECK(clSetKernelArg(kernel, 0, sizeof(input_buffer), &input_buffer)); CL_CHECK(clSetKernelArg(kernel, 1, sizeof(output_buffer), &output_buffer)); CL_CHECK(clSetKernelArg(kernel, 2, sizeof(factor), &factor)); printf("attempting to enqueue write buffer\n"); fflush(stdout); for (int i=0; i<NUM_DATA; i++) { double in = ((double)rand()/(double)(RAND_MAX)) * 100.0;; CL_CHECK(clEnqueueWriteBuffer(queue, input_buffer, CL_TRUE, i*sizeof(double), 8, &in, 0, NULL, NULL)); } cl_event kernel_completion; size_t global_work_size[1] = { NUM_DATA }; printf("attempting to enqueue kernel\n"); fflush(stdout); CL_CHECK(clEnqueueNDRangeKernel(queue, kernel, 1, NULL, global_work_size, NULL, 0, NULL, &kernel_completion)); printf("Enqueue'd kerenel\n"); fflush(stdout); cl_ulong time_start, time_end; CL_CHECK(clWaitForEvents(1, &kernel_completion)); CL_CHECK(clGetEventProfilingInfo(kernel_completion, CL_PROFILING_COMMAND_START, sizeof(time_start), &time_start, NULL)); CL_CHECK(clGetEventProfilingInfo(kernel_completion, CL_PROFILING_COMMAND_END, sizeof(time_end), &time_end, NULL)); double elapsed = time_end - time_start; printf("time(ns):%lg\n",elapsed); CL_CHECK(clReleaseEvent(kernel_completion)); printf("Result:"); for (int i=0; i<NUM_DATA; i++) { double data; CL_CHECK(clEnqueueReadBuffer(queue, output_buffer, CL_TRUE, i*sizeof(double), 8, &data, 0, NULL, NULL)); //printf(" %lg", data); } printf("\n"); CL_CHECK(clReleaseMemObject(memObjects[0])); CL_CHECK(clReleaseMemObject(memObjects[1])); CL_CHECK(clReleaseKernel(kernel)); CL_CHECK(clReleaseProgram(program)); CL_CHECK(clReleaseContext(context)); return 0; }
//_____________________________________________________________________________ // AUEffectBase::~AUEffectBase() { Cleanup(); }
CharSampSet::~CharSampSet() { Cleanup(); }
void EnterEvadeMode() { Cleanup(); summons.DespawnAll(); BossAI::EnterEvadeMode(); }
// Destructor CCPACSGuideCurveProfiles::~CCPACSGuideCurveProfiles(void) { Cleanup(); }
void CNetworkDetectionBase::CleanupAndDeleteSelf() { m_deleteSelf = true; Cleanup(); }
// --------------------------------------------------------------------------- // 破棄 // WinDrawDDS::~WinDrawDDS() { Cleanup(); }
C_Fill::~C_Fill() { if(DitherPattern_) Cleanup(); }
CAPlayThrough::~CAPlayThrough() { Cleanup(); }
Session::~Session() { Cleanup(); }
CAppInterfaces::~CAppInterfaces() { Cleanup(); }
SpriteData::~SpriteData() { Cleanup(); }
CDAccess_CCD::~CDAccess_CCD() { Cleanup(); }
/** * Error action for a peer, triggers a Cleanup action. * \note Must be called with a lock on the peer. * @param p - the peer * @param sock - socket to close */ void Error(peer *p, int sock) { Cleanup(p,sock); }
~DOM_XSLTTransformCallback() { Cleanup(); }
/** * Diameter base protocol state-machine processing. * This function get's called for every event. It updates the states and can trigger * other events. * @param p - the peer for which the event happened * @param event - the event that happened * @param msg - if a Diameter message was received this is it, or NULL if not * @param peer_locked - if the peer lock is already aquired * @param sock - socket that this event happened on, or NULL if unrelated * @returns 1 on success, 0 on error. Also the peer states are updated */ int sm_process(peer *p,peer_event_t event,AAAMessage *msg,int peer_locked,int sock) { int result_code; peer_event_t next_event; int msg_received=0; if (!peer_locked) lock_get(p->lock); LOG(L_INFO,"DBG:sm_process(): Peer %.*s \tState %s \tEvent %s\n", p->fqdn.len,p->fqdn.s,dp_states[p->state],dp_events[event-101]); switch (p->state){ case Closed: switch (event){ case Start: p->state = Wait_Conn_Ack; next_event = I_Snd_Conn_Req(p); sm_process(p,next_event,0,1,p->I_sock); break; case R_Conn_CER: R_Accept(p,sock); result_code = Process_CER(p,msg); Snd_CEA(p,msg,result_code,p->R_sock); if (result_code>=2000 && result_code<3000) p->state = R_Open; else { R_Disc(p); p->state = Closed; } log_peer_list(L_INFO); break; case Stop: /* just ignore this state */ p->state = Closed; break; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case Wait_Conn_Ack: switch(event){ case I_Rcv_Conn_Ack: I_Snd_CER(p); p->state = Wait_I_CEA; break; case I_Rcv_Conn_NAck: Cleanup(p,p->I_sock); p->state = Closed; break; /* Commented as not reachable*/ case R_Conn_CER: R_Accept(p,sock); result_code = Process_CER(p,msg); if (result_code>=2000 && result_code<3000) p->state = Wait_Conn_Ack_Elect; else { p->state = Wait_Conn_Ack; close(sock); } break; case Timeout: Error(p,p->I_sock); p->state = Closed; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case Wait_I_CEA: switch(event){ case I_Rcv_CEA: result_code = Process_CEA(p,msg); if (result_code>=2000 && result_code<3000) p->state = I_Open; else { Cleanup(p,p->I_sock); p->state = Closed; } log_peer_list(L_INFO); break; case R_Conn_CER: R_Accept(p,sock); result_code = Process_CER(p,msg); p->state = Wait_Returns; if (Elect(p,msg)) sm_process(p,Win_Election,msg,1,sock); break; case I_Peer_Disc: I_Disc(p); p->state = Closed; break; case I_Rcv_Non_CEA: Error(p,p->I_sock); p->state = Closed; break; case Timeout: Error(p,p->I_sock); p->state = Closed; break; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; /* commented as not reachable */ case Wait_Conn_Ack_Elect: switch(event){ default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case Wait_Returns: switch(event){ case Win_Election: I_Disc(p); result_code = Process_CER(p,msg); Snd_CEA(p,msg,result_code,p->R_sock); if (result_code>=2000 && result_code<3000){ p->state = R_Open; }else{ R_Disc(p); p->state = Closed; } break; case I_Peer_Disc: I_Disc(p); result_code = Process_CER(p,msg); Snd_CEA(p,msg,result_code,p->R_sock); if (result_code>=2000 && result_code<3000){ p->state = R_Open; }else{ R_Disc(p); p->state = Closed; } break; case I_Rcv_CEA: R_Disc(p); result_code = Process_CEA(p,msg); if (result_code>=2000 && result_code<3000) p->state = I_Open; else { Cleanup(p,p->I_sock); p->state = Closed; } break; case R_Peer_Disc: R_Disc(p); p->state = Wait_I_CEA; break; case R_Conn_CER: R_Reject(p,p->R_sock); p->state = Wait_Returns; break; case Timeout: if (p->I_sock>=0) Error(p,p->I_sock); if (p->R_sock>=0) Error(p,p->R_sock); p->state = Closed; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case R_Open: switch (event){ case Send_Message: Snd_Message(p,msg); p->state = R_Open; break; case R_Rcv_Message: // delayed processing until out of the critical zone //Rcv_Process(p,msg); msg_received = 1; p->state = R_Open; break; case R_Rcv_DWR: result_code = Process_DWR(p,msg); Snd_DWA(p,msg,result_code,p->R_sock); p->state = R_Open; break; case R_Rcv_DWA: Process_DWA(p,msg); p->state = R_Open; break; case R_Conn_CER: R_Reject(p,sock); p->state = R_Open; break; case Stop: Snd_DPR(p); p->state = Closing; break; case R_Rcv_DPR: Snd_DPA(p,msg,AAA_SUCCESS,p->R_sock); R_Disc(p); p->state = Closed; log_peer_list(L_INFO); break; case R_Peer_Disc: R_Disc(p); p->state = Closed; log_peer_list(L_INFO); break; case R_Rcv_CER: result_code = Process_CER(p,msg); Snd_CEA(p,msg,result_code,p->R_sock); if (result_code>=2000 && result_code<3000) p->state = R_Open; else { /*R_Disc(p);p.state = Closed;*/ p->state = R_Open; /* Or maybe I should disconnect it?*/ } break; case R_Rcv_CEA: result_code = Process_CEA(p,msg); if (result_code>=2000 && result_code<3000) p->state = R_Open; else { /*R_Disc(p);p.state = Closed;*/ p->state = R_Open; /* Or maybe I should disconnect it?*/ } log_peer_list(L_INFO); break; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case I_Open: switch (event){ case Send_Message: Snd_Message(p,msg); p->state = I_Open; break; case I_Rcv_Message: // delayed processing until out of the critical zone //Rcv_Process(p,msg); msg_received = 1; p->state = I_Open; break; case I_Rcv_DWR: result_code = Process_DWR(p,msg); Snd_DWA(p,msg,result_code,p->I_sock); p->state =I_Open; break; case I_Rcv_DWA: Process_DWA(p,msg); p->state =I_Open; break; case R_Conn_CER: R_Reject(p,sock); p->state = I_Open; break; case Stop: Snd_DPR(p); p->state = Closing; break; case I_Rcv_DPR: Snd_DPA(p,msg,2001,p->I_sock); R_Disc(p); p->state = Closed; log_peer_list(L_INFO); break; case I_Peer_Disc: I_Disc(p); p->state = Closed; log_peer_list(L_INFO); break; case I_Rcv_CER: result_code = Process_CER(p,msg); Snd_CEA(p,msg,result_code,p->I_sock); if (result_code>=2000 && result_code<3000) p->state = I_Open; else { /*I_Disc(p);p.state = Closed;*/ p->state = I_Open; /* Or maybe I should disconnect it?*/ } break; case I_Rcv_CEA: result_code = Process_CEA(p,msg); if (result_code>=2000 && result_code<3000) p->state = I_Open; else { /*I_Disc(p);p.state = Closed;*/ p->state = I_Open; /* Or maybe I should disconnect it?*/ } break; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; case Closing: switch(event){ case I_Rcv_DPA: I_Disc(p); p->state = Closed; break; case R_Rcv_DPA: R_Disc(p); p->state = Closed; break; case Timeout: if (p->I_sock>=0) Error(p,p->I_sock); if (p->R_sock>=0) Error(p,p->R_sock); p->state = Closed; break; case I_Peer_Disc: I_Disc(p); p->state = Closed; break; case R_Peer_Disc: R_Disc(p); p->state = Closed; break; default: LOG(L_DBG,"DBG:sm_process(): In state %s invalid event %s\n", dp_states[p->state],dp_events[event-101]); goto error; } break; } if (!peer_locked) lock_release(p->lock); if (msg_received) Rcv_Process(p,msg); return 1; error: if (!peer_locked) lock_release(p->lock); return 0; }
DOM_XSLTProcessor::~DOM_XSLTProcessor() { Cleanup(); GetEnvironment()->RemoveXSLTProcessor(this); }
Renderer::~Renderer() { Cleanup(); }
~DOM_XSLTParseCallback() { Cleanup(); }
/* Destroy the app */ VOID CXBApplicationEx::Destroy() { CLog::Log(LOGNOTICE, "destroy"); // Perform app-specific cleanup Cleanup(); }
// エントリポイント int WINAPI _tWinMain( HINSTANCE hInst, HINSTANCE, LPTSTR, int ) { LARGE_INTEGER nNowTime, nLastTime; // 現在とひとつ前の時刻 LARGE_INTEGER nTimeFreq; // 時間単位 // 画面サイズ g_nClientWidth = VIEW_WIDTH; // 幅 g_nClientHeight = VIEW_HEIGHT; // 高さ // Register the window class WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle( NULL ), NULL, NULL, NULL, NULL, _T( "D3D Sample" ), NULL }; RegisterClassEx( &wc ); RECT rcRect; SetRect( &rcRect, 0, 0, g_nClientWidth, g_nClientHeight ); AdjustWindowRect( &rcRect, WS_OVERLAPPEDWINDOW, FALSE ); g_hWnd = CreateWindow( _T( "D3D Sample" ), _T( "Movement_4_1b" ), WS_OVERLAPPEDWINDOW, 100, 20, rcRect.right - rcRect.left, rcRect.bottom - rcRect.top, GetDesktopWindow(), NULL, wc.hInstance, NULL ); // Initialize Direct3D if( SUCCEEDED( InitD3D() ) && SUCCEEDED( MakeShaders() ) ) { // Create the shaders if( SUCCEEDED( InitDrawModes() ) ) { if ( SUCCEEDED( InitGeometry() ) ) { // ジオメトリ作成 // Show the window ShowWindow( g_hWnd, SW_SHOWDEFAULT ); UpdateWindow( g_hWnd ); InitCharacter(); // キャラクタ初期化 QueryPerformanceFrequency( &nTimeFreq ); // 時間単位 QueryPerformanceCounter( &nLastTime ); // 1フレーム前時刻初期化 // Enter the message loop MSG msg; ZeroMemory( &msg, sizeof( msg ) ); while( msg.message != WM_QUIT ) { Render(); MoveCharacter(); do { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } QueryPerformanceCounter( &nNowTime ); } while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 90 ) ) && ( msg.message != WM_QUIT ) ); while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 60 ) ) && ( msg.message != WM_QUIT ) ) { QueryPerformanceCounter( &nNowTime ); } nLastTime = nNowTime; g_pSwapChain->Present( 0, 0 ); // 表示 } } } } // Clean up everything and exit the app Cleanup(); UnregisterClass( _T( "D3D Sample" ), wc.hInstance ); return 0; }
DataGloveThread::~DataGloveThread() { Cleanup(); }
C_ListBox::~C_ListBox() { if(Root_){ Cleanup(); } }
void JustDied(Unit* /*killer*/) { Cleanup(); _JustDied(); }
CGUITextureManager::~CGUITextureManager(void) { Cleanup(); }
CubeSearchObject::~CubeSearchObject() { Cleanup(); }
//======================================================= // メインループ関数 //======================================================= void MainLoop(void) { ARUint8 *image; // カメラキャプチャ画像 ARMarkerInfo *marker_info; // マーカ情報 int marker_num; // 検出されたマーカの数 int i, j, k; // カメラ画像の取得 if( (image = (ARUint8 *)arVideoGetImage()) == NULL ){ arUtilSleep( 2 ); return; } if( count == 0 ) arUtilTimerReset(); count++; // カメラ画像の描画 argDrawMode2D(); argDispImage( image, 0, 0 ); // マーカの検出と認識 if( arDetectMarker( image, thresh, &marker_info, &marker_num ) < 0 ){ Cleanup(); exit(0); } // 次の画像のキャプチャ指示 arVideoCapNext(); // 3Dオブジェクトを描画するための準備 argDrawMode3D(); argDraw3dCamera( 0, 0 ); glClearDepth(1.0); // デプスバッファの消去値 glClear( GL_DEPTH_BUFFER_BIT ); // デプスバッファの初期化 if(movex[0]!=0 && movex[3]!=0 && movex[7]!=0){ rmove++; if(rmove!=0){ Drawnashi( marker[3].mark_id, marker[3].patt_trans); } if(rmove>40.0){ rmove=0.0; for(int i=0;i<MARK_NUM;i++){ movex[i]=0; } } }else{ // マーカの一致度の比較 for( i=0; i<MARK_NUM; i++ ){ k = -1; for( j=0; j<marker_num; j++ ){ if( marker[i].patt_id == marker_info[j].id ){ if( k == -1 ) k = j; else if( marker_info[k].cf < marker_info[j].cf ) k = j; } } // マーカーが見つからなかったとき if( k == -1 ){ if(marker[i].visible != 0){ midi_out(i+1); midi_stop(i+1); movex[i]=1; marker[i].visible = 0; }else if(movex[i]!=0){ DrawObject( marker[i].mark_id, marker[i].patt_trans,i ); } }else{ // 座標変換行列を取得 if( marker[i].visible == 0 ) { // 1フレームを使ってマーカの位置・姿勢(座標変換行列)の計算 arGetTransMat( &marker_info[k], marker[i].patt_center, marker[i].patt_width, marker[i].patt_trans ); //初回の認識ではarGetTransMatを2回目以降ではarGetTransMatContを使うと安定するらしい marker[i].visible = 1; } else { // 前のフレームを使ってマーカの位置・姿勢(座標変換行列)の計算 arGetTransMatCont( &marker_info[k], marker[i].patt_trans, marker[i].patt_center, marker[i].patt_width, marker[i].patt_trans ); } // 3Dオブジェクトの描画 if(movex[i]!=0){ DrawObject( marker[i].mark_id, marker[i].patt_trans,i ); } } if(movex[i]>=40.0) movex[i]=0; if(movex[i]!=0) movex[i]++; } } // バッファの内容を画面に表示 argSwapBuffers(); }
~VideoDecoder(){ Cleanup(); }
CDNSSDService::~CDNSSDService() { Cleanup(); }