문제

I am writing a C#컨트롤 랩 DirectX9 간편한 인터페이스를 제공합을 수행하 2D 픽셀 수준이다..순이 필요로 하는 내가 랩을 이 코드에 안전하지 않은 코드 블록과 컴파일 수 있으로 안전하지 않은 코드 옵션입니다.

나는 잠금의 표면 전체에는 다음 포인터를 반환하,잠금 메모리 영역.그런 다음 쓰는 픽셀 데이터 직접 사용하여"간단한"포인터 연산입니다.나는 성능 테스트이고 실질적인 속도 개선을 통해 다른"안전한"방법을 알고 있습니다.

이는 가장 빠른 방법을 조작하는 개별 픽셀에서는 C#.인터넷 응용 프로그램?더 나은,더 안전한 방법이 있을까?는 경우가 있었는 동일하게 빠른 접근 방식이 필요하지 않은 포인터를 조작할 수 있습니다.환경을 사용합니다.

(나는 알고 이것은 2008 년과 우리가 모든 것을 사용하여 DirectX3D, OpenGL,etc., 그러나 이제 사용에 대한 독점적으로 2D 픽셀 렌더링하고 단순히 필요로하지 않습 3D 렌더링을 수행합니다.)

도움이 되었습니까?

해결책

를 사용하여 안전하지 않은 포인터가 가장 빠른 방법을 직접 메모리 조작에서는 C#(확실히 사용하는 것보다 더 빨리 마샬 wrapper 가능).

호기심이,어떤 종류의 2D 도면 작업을 수행하려고 시도하고?

나 요구하기 때문에 잠금 DirectX 표면을 픽셀 수준의 조작을 것입니다 패배의 대부분은 하드웨어 가속 혜택을 것이라고 희망을 얻에서 사용 DirectX.또한,DirectX 장치 초기화되지 않 통해 사용되는 경우 터미널 서비스(원격 데스크톱),그래서 제어 사용할 수 없는 시나리오(이 문제가되지 않을 수 있습니다 당신).

DirectX 것이 큰 승리를 그릴 때 큰 삼각형과 변형 이미지(텍스처 매핑에 쿼드),하지만 정말 수행하는 것으로 큰 하나의 픽셀을 조작입니다.

니다.NET 땅,하나 대안을 유지하는 것이 주위트맵 개체 행위로 표면을 사용하여,LockBits 고 직접 액세스하는 픽셀을 통해 안전하지 않은 포인터를 반환되는 비트맵 이미지를 개체입니다.

다른 팁

네,그것은 아마도 가장 빠른 방법입니다.

몇 년 전 나는 두 비교하 1024x1024 이미지 픽셀 수준;get 픽셀 방법은 2 분이고,안전하지 않은 검사를 수 0.01 초입니다.

나는 사용자가 안전하지 않은 일을 속도습니다.성능 개선은 극적으로,적어도이다.여기에 포인트는 안전하지 않은 꺼지리의 것이 필요하지 않을 수 있는만큼 당신은 무엇을하고있다.

또한,체크 아웃 DirectDraw.그것은 은 2D 그래픽 요소의 DirectX.그것은 정말 빠르다.

나는 최근에 제작을 맡았을 만드 간단한 히스토그램을 통제에 대한 우리의 씬 클라이언트 응용 프로그램(C#).이미지었다는 것을 분석하였 1200x1200 을 같은 경로입니다.내가 만들 수 있는 것은 그리기 자체를 한 번으로 문제 없습니다,하지만 제어가 필요하다 다시 상당한.난을 피하기 위해 노력,그것을 얻기에는 원시 메모리 자체입니다.

나는 그것을 말하는 것은 불가능을 사용하여 표준입니다.NET 클래스,하지만 그것을 얻을 너무 작습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top