OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
이미 많은 개발자들이 C#의 장점을 누리고 있으나, 본 PT에서는 높은 성능과 생산성을 동시에 달성하기 위해 C/C++로 개발된 native 게임 코드에 스크립트 언어로서 C#을 통합 할 수 있는 방법을 제시한다. 이를 위해 오픈소스 .Net 프레임웍인 Mono의 사용방법과 모바일 플랫폼에서의 특이사항들을 자세히 설명한다.
또한, C/C++언어에 C#을 비롯한 다양한 스크립트 언어를 효율적으로 혼합하여 게임을 구현할 수 있는 아키텍처를 제시한다. clang과 reflection을 이용하여 서로 다른 언어 간 인터페이스 노출을 자동화하고, 게임 내 오브젝트의 생명주기를 자동으로 관리할 수 있는 기법에 대해 설명한다.
The document discusses the history and key aspects of internet decency legislation in the United States from 1996-2004. It covers laws like the Communications Decency Act of 1996, Child Online Protection Act of 1998, and Children's Internet Protection Act of 2000. These attempted to restrict minors' access to indecent or obscene material online but faced legal challenges over free speech concerns. The Supreme Court struck down parts of the CDA and COPA, while upholding filtering requirements under CIPA for schools/libraries receiving federal funds.
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
이미 많은 개발자들이 C#의 장점을 누리고 있으나, 본 PT에서는 높은 성능과 생산성을 동시에 달성하기 위해 C/C++로 개발된 native 게임 코드에 스크립트 언어로서 C#을 통합 할 수 있는 방법을 제시한다. 이를 위해 오픈소스 .Net 프레임웍인 Mono의 사용방법과 모바일 플랫폼에서의 특이사항들을 자세히 설명한다.
또한, C/C++언어에 C#을 비롯한 다양한 스크립트 언어를 효율적으로 혼합하여 게임을 구현할 수 있는 아키텍처를 제시한다. clang과 reflection을 이용하여 서로 다른 언어 간 인터페이스 노출을 자동화하고, 게임 내 오브젝트의 생명주기를 자동으로 관리할 수 있는 기법에 대해 설명한다.
The document discusses the history and key aspects of internet decency legislation in the United States from 1996-2004. It covers laws like the Communications Decency Act of 1996, Child Online Protection Act of 1998, and Children's Internet Protection Act of 2000. These attempted to restrict minors' access to indecent or obscene material online but faced legal challenges over free speech concerns. The Supreme Court struck down parts of the CDA and COPA, while upholding filtering requirements under CIPA for schools/libraries receiving federal funds.
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
Windows 10의 UWP 앱을 개발하면 모든 Windows 10 디바이스에서 앱을 작동할 수 있습니다.
이 UWP 앱을 C++로 개발할 수 있습니다. C++로 앱을 개발하면 크로스 플랫폼 지원의 유리함, 기존 코드의 재활용, 성능향상 등의 이점이 있습니다. 본 세션에서는 몇 가지 예를 들어 C++로 UWP 앱을 개발하는 방법을 소개하며 특히 win32와 C++을 사용하던 개발자가 쉽게 UWP 앱 개발에 적응할 수 있도록 돕습니다.
테크데이즈 코리아 2014 에서 "The Future of C# and .NET Framework"라는 제목으로 발표한 슬라이드 입니다. 관련 동영상 : http://www.microsoftvirtualacademy.com/training-courses/-techdays-korea-2014-t14
**** 도서관 프로그램 완성 ㅋ(서버(관리자), 클라이언트)
2015/7/22 ~ 2015/8/6 (약 2주)
개발자 : 안병현, 한골드 @한정수
사용한 언어 : 개발자
- JAVA JDK 1.8(Swing, Socket) : 한정수
- C#(WPF) : 안병현
- C/C++(Socket, DLL-Socket) : 안병현, 한정수
* 기능
관리자
(도서 추가/도서 검색/신청 도서 구입/고객 추가/고객 찾기/가입 허가/지출 및 수입 확인)
클라이언트
(도서 검색/대여/반납/도서 신청/회원 가입/로그인)
* Linux(Server)
- Cent OS Release 6.1
- Mysql(5.1.73, RDB)
- GCC version-4.4.7
*VM으로 돌리지 않음.
* 구성
1. JAVA(Swing, Socket)
자바 Swing에 Socket으로 서버소켓과 연결하여 입력된 명령(Command)에 따라 서버에서
해당하는 데이터를 송수신함.
2. C#
C# 소스에서는 주로 UI를 만들기 위한 소스를 만들었고, 소켓 통신을 C에 의존하였음.
이른 바인딩으로 C/C++로 만든 DLL을 참조하였고, 마찬가지로 입력된 명령에 따라 서버에서
해당하는 데이터를 송수신함.
3. C(리눅스 서버측)
-1 JAVA
자바와 통신하는 소스는 do~while 구문으로 하나의 명령에 하나의 소켓으로 일대일 방식으로 구성
* 구분자 '/'
-2 C#
C#과 통신하는 소스는 while 구문으로 해당 클라이언트에 하나의 쓰레드를 할당하였고,
전체 클라이언트 소켓관리는 int형 배열을 만들어 관리함.
* 구분자 ','
* 권장 사양
- JDK 설치
- .NET Framework 설치
- Windows 지원하는 OS
* 생각해니까 굉장히 쓸모 없는 도서관 프로그램임
* 포트 포워딩을 하지않아서 그런지 다른 네트워크 망에서는 리눅스 서버에 접근하지 못함(방화벽을 허물어도 안됨 ㅅㅂ..)
+ C/C++로 DLL 어셈블리 만드는게 처음이라서 개짜증났음. 게다가 C가 CLS에 맞지 않아서 자료형 맞추려다 보니 미치는줄
+ Server socket 예제가 채팅만 줠라게 많아서 미치는줄
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...민웅 이
The document discusses various sampling methods for real-time volume rendering. It proposes pinning samples to reduce aliasing from camera motion. Pinning involves constraining sample motion to lie on a slice parallel to the camera image plane. Forward motion pinning is simple to implement but rotational or general motion requires adapting sample positions through advection. The document also describes using an adaptive 1/z sampling density to provide detail near the viewer while supporting a large render range.
This document discusses wrapped diffuse shading. It is used in Team Fortress 2 to provide a more subtle reflectance by wrapping a hemisphere around the shading model. Wrapped diffuse is similar to half Lambert shading and is commonly used to represent subsurface scattering and particle lighting. The wrapped function uses half Lambert to sample values from a 1D wrapped diffuse texture. Team Fortress 2 implements this by precomputing lighting calculations in a texture to improve performance. Code examples are provided for specular fresnel, primary specularity, rim fresnel, upward ambient rim, and mixing the components for the final shading result.
2. 3D Engine Tools
엔진은 C++로 툴은 C#으로 개발하고 싶을때
사용
엔진/툴 독립적으로 유지 관리
툴 개발시 GUI부분의 시간 단축
약간의 노가다 작업 필요
서버와 클라이언트 같은 작업 필요
3. CLR
CLR(Common Language Runtime) 공통 언어
런타임
성능 향상
CLR의 JIT 컴파일러를 통해 만들어진 코드는
unmanaged code에 비해 성능이 우수
개체 수명을 관리하는 가비지 수집
CLR의 장점이라기 보다는 .NET Framework 차원
에서 지원하는 장점
4. C#
.Net Framework 사용
Java 와 비슷함
툴 개발이 쉽다
GUI 개발이 편리함
Windows Form
WPF
Xaml 방식, DirectX 랜더링, Shader도 사용가능
C++과 연동하기 위해 CLR를 사용
6. C++과 CLR 코딩 방식
포인터의 사용
C++ : test * temp = new test()
CLR : test^ temp = gcnew temp()
주소값사용은 & -> %
NULL 체크 NULL -> nullptr
클래스
C++ : class Test
CLR : public ref class Test
7. String 변환
C#은 기본적으로 Unicode만 지원
Marshal 라이브러리를 사용하여 간단히 C++
용으로 변환
닷넷 프레임워크 3.0부터 지원
3.0이전 버전에는 문제가 많았음
msclr::interop::marshal_context ctx;
const char* ch = ctx.marshal_as<const char*> (str);
C# 외부 DLL 링크도 가능
public sealed class DevilAPI
{
private const string DEVIL_LIBRARY = "Devil.dll";
[DllImport(DEVIL_LIBRARY, CallingConvention = CallingConvention.Winapi), SuppressUnmanagedCodeSecurity]
public static extern void ilInit();
}
8. Wrapper(CLR)
C++의 데이터를 C#에서 사용하기 위해서는
C++에 사용하는 데이터 구조를 C#쪽에 새로
만듬
저의 경우는 CLR 부분에서는 C++ <-> C#쪽의 데
이터의 변환 부분만 해줌
툴 기능 코드들은 CLR과 C#쪽에서 모두 처리
Engine
AData
Wrapper(CLR)
SetAData
UpdateAData
Tool
ADataInfo
9. Wrapper
※ 이런식의 구조도 될 수 가 있음
참고 ) 툴과 오버 엔지니어링 그리고 벽돌 http://gamedevforever.com/23