c언어의 switch - case 문은
switch(val)
{
   case 1:
      break;

   case 2:
   case 3:
     break;

   default:
      break;
}
 
이렇게 구성되는데 반해

visual basic에서는
Select switch val
    case 1
    case 2, 3
    case 4 To 5
    case else
End Select
 
이렇게 구성된다.

[링크 : http://msdn.microsoft.com/ko-kr/library/cy37t14y.aspx]
[링크 : http://msdn.microsoft.com/en-us/library/cy37t14y(v=vs.80).aspx
Posted by 구차니
Programming/openGL2011. 3. 16. 21:55
프로젝트 링커에서는 되도록이면
opengl32.lib glut32.lib glu32.lib 세가지 모두 넣어주는게 속이 편하다.


glut32.dll ->C:\Windows\System32
glut32.lib ->C:\program files\microsoft visual studio 8\vc\platformsdk\lib
glut32.h ->...\vc\platformsdk\include\gl

opengl32.lib glu32.lib glut32.lib

[링크 : http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=220142] 

만약 glu32.lib를 하지 않으면 일부 glu를 사용하는 프로그램에서 다음과 같은 에러가 발생한다.
1>bigtest.obj : error LNK2019: _gluLookAt@72 외부 기호(참조 위치: _gfxInit 함수)에서 확인하지 못했습니다.
1>bigtest.obj : error LNK2019: _gluPerspective@32 외부 기호(참조 위치: _gfxInit 함수)에서 확인하지 못했습니다.
1>bigtest.obj : error LNK2019: _gluOrtho2D@32 외부 기호(참조 위치: _showText 함수)에서 확인하지 못했습니다.
1>C:\Documents and Settings\user\바탕 화면\openGL\openGL\Debug\openGL.exe : fatal error LNK1120: 3개의 확인할 수 없는 외부 참조입니다. 

[링크 : http://thoughtsfrommylife.com/article-748-OpenGL_and_Visual_Studio_Express_2008]
[링크 : http://doctory.egloos.com/10521013]
[링크 : http://www.mrmoen.com/2008/03/30/opengl-with-visual-c-express-edition/]




'Programming > openGL' 카테고리의 다른 글

openGL - glbegin()  (2) 2011.03.25
openGL - glortho()  (4) 2011.03.25
윈도우에서 opengl.dll을 찾을 수 없다고 할 경우  (0) 2011.03.15
GLUT(openGL Utility Toolkit) 다운로드 (윈도우)  (0) 2011.03.15
openGL tutorial  (0) 2011.03.12
Posted by 구차니
Programming/openGL2011. 3. 15. 23:21
"opengl.dll을 찾을 수 없으므로 응용 프로그램을 시작하지 못했습니다."
라는 에러가 발생하면 윈도우에서는 아래와 같이 glut.lib를 링크했을 경우이다.
glut.lib / glut.dll 은 sgi 용이라서 윈도우에서 하려면
glut32.lib / glut32.dll 을 링크해야 한다고 한다.



---
2011.03.16 추가
아마도 위에서는 opengl32.lib를 링킹해주지 않아서 발생한 에러로 추측된다.
자세한 링크 정보와 복사경로는 아래의 문서 참조
2011/03/16 - [Programming/openGL] - visual Studio에서 openGL 돌리기
---

[링크 : http://pcsupport.about.com/od/findbyerrormessage/a/opengl-dll-not-found-missing-error.htm]

'Programming > openGL' 카테고리의 다른 글

openGL - glortho()  (4) 2011.03.25
visual Studio에서 openGL 돌리기  (0) 2011.03.16
GLUT(openGL Utility Toolkit) 다운로드 (윈도우)  (0) 2011.03.15
openGL tutorial  (0) 2011.03.12
openGL, GLU, GLUT 관계  (4) 2011.03.07
Posted by 구차니
Programming/openGL2011. 3. 15. 23:01
필요한 녀석은 glutdll3x.zip 하나이다.
GL/gl.h 나 GL/glu.h 는 OS에 포함되어 있거나 그래픽 카드 벤더에서 제공을 하고 있으므로
그리 신경을 안써도 된다는데, Visual Studio 2008의 경우
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl 경로에 기본적으로 포함을 하고 있다.

그리고
glut.h는 C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL이나
            C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl
glut.lib는 C:\Program Files\Microsoft Visual Studio 9.0\VC\lib 에 복사한다.

[링크: http://www.opengl.org/resources/libraries/glut/glut_downloads.php#windows]
    [링크 : http://www.opengl.org/resources/libraries/glut/glut36.zip]  
    [링크 : http://www.opengl.org/resources/libraries/glut/glutdlls36.zip] << 다운로드
    [링크 : http://www.opengl.org/resources/libraries/glut/glut36data.zip]

    [링크 : http://www.opengl.org/resources/libraries/glut/glut37.zip]
    [링크 : http://www.opengl.org/resources/libraries/glut/glut37data.zip] << 다운로드
    [링크 : http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip]

'Programming > openGL' 카테고리의 다른 글

visual Studio에서 openGL 돌리기  (0) 2011.03.16
윈도우에서 opengl.dll을 찾을 수 없다고 할 경우  (0) 2011.03.15
openGL tutorial  (0) 2011.03.12
openGL, GLU, GLUT 관계  (4) 2011.03.07
openGL - GLUT  (0) 2010.08.26
Posted by 구차니
Programming/openGL2011. 3. 12. 21:39
하아.. 언넝 따라해보면서 습득을 해야지 ㅠ.ㅠ


'Programming > openGL' 카테고리의 다른 글

윈도우에서 opengl.dll을 찾을 수 없다고 할 경우  (0) 2011.03.15
GLUT(openGL Utility Toolkit) 다운로드 (윈도우)  (0) 2011.03.15
openGL, GLU, GLUT 관계  (4) 2011.03.07
openGL - GLUT  (0) 2010.08.26
glBegin() / glEnd()  (3) 2010.08.23
Posted by 구차니
Programming/css2011. 3. 9. 17:07
IE 에서는
body
{
    background-color:#000000;
}
이러면 되는데

크롬에서는
html, body
{
    background-color:#000000;
}
이렇게 해야만 된다 -_-

그리고 이미지 경로도
tr {
    background: transparent url(/shadow-down.gif) no-repeat 0% 100%;
    display: block;
    position: relative;
    width: 828px;
}
/ 의 유무에 따라 크롬에서는 민감하게 작동한다 -_-


'Programming > css' 카테고리의 다른 글

CSS / JS 파일 용량 줄이기  (0) 2015.09.18
css selector  (0) 2015.09.14
css 관련  (4) 2015.09.08
css box model  (0) 2014.05.15
CSS Naked day!  (2) 2009.04.09
Posted by 구차니
Programming/web 관련2011. 3. 9. 09:58
예전에 대충 본적은 있지만, 써본건 첨이라 대충 정리


Chrome
크롬은 우클릭 메뉴에서 "요소 검사" 를 누른다.

그리고는 하단의 돋보기를 클릭하고

원하는 지점을 선택하여 클릭하면 아래에 HTML 소스가 나타난다.



Internet Explorer 8
IE는 도구 - 개발자 도구 를 누르거나 F12를 누르면 된다.
(버그인지 가끔 연결이 안되는데 그럴때는 IE를 재시작해야 한다 -_-)


개발자 도구의 "클릭으로 요소 선택" 이라는 커서 아이콘을 누르면

아래와 같이 특정 영역이 박스로 쳐지면서 클릭시, 개발자 도구에 소스가 나타난다.

개인적으로는 CSS 속성을 껐다 켰다 할 수 있는 IE8 쪽을 추천하고 싶다.

'Programming > web 관련' 카테고리의 다른 글

wan 에서 mac address 얻기  (0) 2013.07.09
축약주소 만들기 서비스  (0) 2013.07.08
php-mobile-detect  (0) 2013.02.23
php if/else/echo  (0) 2012.11.30
TD 태그 - Chrome 과 IE 차이?  (0) 2011.05.30
Posted by 구차니
Programming/openGL2011. 3. 7. 09:57
문서를 찾아봐도 딱히 연관관계에 관한 내용이 없어서 대충 끄적끄적 정리 -_-


openGL은 렌더링에 관련된 라이브러리로 내부에 정해진 쉐이더가 존재한다.(라고 하는데 알리가 없잖아 -_-)
이러한 쉐이더를 제어할 수 있는 녀석이 GLSL(Graphic Library Shader Language)이고
이를 편하게 하기 위해 만들어 진것이 GLEW(GL extension Wrangler Library) 이다.

그리고 openGL에 그리거나 조작을 할 수 있는 함수가
GLU(GL Utility library) 이고, GLU/GL에는 키보드나 마우스 등의 입력에 관한 처리가 없으므로
이를 처리해서 통합적으로 관리해주는 것이 GLUT(GL Utility Toolkit) 이다.

아무튼 GLUT의 경우에는 OS에 따른 플랫폼을 포함하므로 openGL과 GLUT사이에는
GLX(GL extension for unix/Linux Xwindow) 혹은 WGL(GL extension for Microsoft Windows)가 존재할 듯?
XGL은 GLX를 지원하는 Xserver라고 한다.



'Programming > openGL' 카테고리의 다른 글

GLUT(openGL Utility Toolkit) 다운로드 (윈도우)  (0) 2011.03.15
openGL tutorial  (0) 2011.03.12
openGL - GLUT  (0) 2010.08.26
glBegin() / glEnd()  (3) 2010.08.23
openGL 문서들  (0) 2010.08.22
Posted by 구차니
Programming/openCL & CUDA2011. 3. 2. 18:23
3.2도 못해봤는데 4.0이라니 언제따라가?!?!?! ㅠ.ㅠ

Release Highlights

Easier Application Porting

  • Share GPUs across multiple threads
  • Use all GPUs in the system concurrently from a single host thread
  • No-copy pinning of system memory, a faster alternative to cudaMallocHost()
  • C++ new/delete and support for virtual functions
  • Support for inline PTX assembly
  • Thrust library of templated performance primitives such as sort, reduce, etc.
  • NVIDIA Performance Primitives (NPP) library for image/video processing
  • Layered Textures for working with same size/format textures at larger sizes and higher performance

Faster Multi-GPU Programming

  • Unified Virtual Addressing
  • GPUDirect v2.0 support for Peer-to-Peer Communication

New & Improved Developer Tools

  • Automated Performance Analysis in Visual Profiler
  • C++ debugging in cuda-gdb
  • GPU binary disassembler for Fermi architecture (cuobjdump)

Please refer to the Release Notes and Getting Started Guides for more information.


[링크 : http://developer.nvidia.com/object/cuda_4_0_RC_downloads.html]


Posted by 구차니
Programming/openCL & CUDA2011. 2. 5. 23:42
CUDA Driver API나 Runtime API는 원칙적으로 하나의 GPU를 사용하여
하나의 GPU내의 멀티쓰레드를 사용하도록 설계되어 있다. 이러한 제어의 관리를 컨텍스트 라고 지칭해도 될 지 모르겠지만
이러한 기본 컨텍스트는 1번 GPU를 사용하도록 되어있고,
Runtime API 쪽에서는 cudaSetDevice (int device) 라는 함수로 특정 GPU를 사용하도록 제한할 수 있다.

하지만 Driver API에는 이러한 함수가 존재하지 않으므로
직접 Handle을 이용하여 openMP 나 thread 등을 이용하여 직접 여러개의 CPU 쓰레드를 이용하여
GPU를 여러개 동시에 가동시키는 방법을 사용하는 것으로 보여진다.

8.2  Multi-GPU Programming 

 In order to issue work to a GPU, a context is established between a CPU thread and the GPU.  Only one context can be active on GPU at a time.  Similarly, a CPU thread can have one active context at a time.  A context is established during the program’s first call to a function that changes state (such as cudaMalloc(), etc.), so one can force the creation of a context by calling cudaFree(0).  Note that a context is created on GPU 0 by default, unless another GPU is selected explicitly prior to context creation with a cudaSetDevice() call.  Context is destroyed either with a cudaThreadExit() call, or when the controlling CPU thread exits.

 CUDA driver API allows a single CPU thread to manage multiple contexts (and therefore multiple GPUs) by pushing/popping contexts.  In the remainder of the document we will focus on CUDA runtime API, which currently allows strictly one context per CPU thread. 

 In order to issue work to p GPUs concurrently, a program needs p CPU threads, each with its own context. Threads can be lightweight (pthreads, OpenMP, etc.) or heavyweight (MPI).  Note that any CPU multi-threading or message-passing API or library can be used, as CPU thread management is completely orthogonal to CUDA.  
For example, one can add GPU processing to an existing MPI application by porting the compute-intensive portions of the code without changing the communication structure. 

 Even though a GPU can execute calls from one context at a time, it can belong to multiple contexts.  For example, it is possible for several CPU threads to establish contexts with the same GPU.  This allows developing multi-GPU applications on a single GPU.  GPU driver manages GPU switching between the contexts, as well as 
partitioning memory among the contexts (GPU memory allocated in one context cannot be accessed from another context). 

[출처 : CUDA_C_Best_Practices_Guide.pdf / Chapter 8]

CUDA Toolkit SDK의 예제는 threadMigration를 참조하면 될 듯
/******************************************************************************
*
*   Module: threadMigration.cpp
*
*   Description:
*     Simple sample demonstrating multi-GPU/multithread functionality using 
*     the CUDA Context Management API.  This API allows the a CUDA context to be
*     associated with a CPU process.  CUDA Contexts have a one-to-one correspondence 
*     with host threads.  A host thread may have only one device context current 
*     at a time.
*
*    Refer to the CUDA programming guide 4.5.3.3 on Context Management
*
******************************************************************************/


MonteCarloMultiGPU 예제에도 cutil 을 이용한 예제가 존재하는 것으로 보인다.
       //Start CPU thread for each GPU
        for(gpuIndex = 0; gpuIndex < GPU_N; gpuIndex++)
            threadID[gpuIndex] = cutStartThread((CUT_THREADROUTINE)solverThread, &optionSolver[gpuIndex]);

    printf("main(): waiting for GPU results...\n");
        cutWaitForThreads(threadID, GPU_N);

cutStartThread는 multithreading.h 에 포함되어 있는 녀석이다.
#if _WIN32
    //Create thread
    CUTThread cutStartThread(CUT_THREADROUTINE func, void *data){
        return CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, data, 0, NULL);
    }
#endif
그리고 이런식으로 해당 OS의 Thread로 연결되어 있다.

'Programming > openCL & CUDA' 카테고리의 다른 글

CUDA processor roadmap / CUDA SDK 4.0  (1) 2011.07.03
CUDA 4.0 RC  (4) 2011.03.02
CUDA driver API / runtime API  (0) 2011.01.26
SLI에 대한 CUDA의 제한(과거에는 그랬다더라~)  (0) 2011.01.26
cuBLAS / BLAS Level 1,2,3  (0) 2011.01.24
Posted by 구차니