DirectX 9를 래핑하고 2D 픽셀 수준 그리기를 수행 할 수있는 단순화 된 인터페이스를 제공하는 C# 컨트롤을 작성했습니다. .NET에서는이 코드를 안전하지 않은 코드 블록으로 묶고 안전하지 않은 코드 허용 옵션으로 컴파일해야합니다.2D 렌더링을위한 안전하지 않은 C# 및 포인터, 좋음 또는 나쁨?
나는 전체 표면을 잠근 다음 메모리의 잠긴 영역에 대한 포인터를 반환합니다. 그런 다음 "간단한"포인터 연산을 사용하여 픽셀 데이터를 직접 쓸 수 있습니다. 나는 성능을 테스트 해 본 결과 내가 아는 다른 "안전한"방법에 비해 상당한 속도 향상을 발견했습니다.
이 방법이 C# .NET 응용 프로그램에서 개별 픽셀을 조작하는 가장 빠른 방법입니까? 더 낫고 안전한 방법이 있습니까? 포인터 조작을 필요로하지 않는 똑같은 빠른 접근 방법이 있다면 그것을 사용하는 것이 나의 선호 일 것입니다.
(그러나이 컨트롤이 2D 픽셀 렌더링을 위해 독점적으로 사용하기에 간단하게 3D 렌더링을 필요로하지 않습니다, 나는이 2008 알고 우리 모두 등 다이렉트 3D, OpenGL을 사용해야합니다.)