C#에서 행렬 곱셈, 합계 등에 XNA 벡터를 선언하고 사용하려고합니다.C# : 행렬 곱셈 등을위한 XNA 벡터 선언 및 사용 al
일반 SetPixel 및 GetPixel보다 빠르게 처리하기 위해 이미지 처리에 사용됩니다. 그러나, 나는 항상 실례를 찾기 위해 실패하고 나는 많은 예제를 온라인으로 시도했지만 뭔가를 놓치고있는 것 같습니다.
도움말 및 샘플 코드?
감사합니다.
C#에서 행렬 곱셈, 합계 등에 XNA 벡터를 선언하고 사용하려고합니다.C# : 행렬 곱셈 등을위한 XNA 벡터 선언 및 사용 al
일반 SetPixel 및 GetPixel보다 빠르게 처리하기 위해 이미지 처리에 사용됩니다. 그러나, 나는 항상 실례를 찾기 위해 실패하고 나는 많은 예제를 온라인으로 시도했지만 뭔가를 놓치고있는 것 같습니다.
도움말 및 샘플 코드?
감사합니다.
성능이 걱정되면 unsafe
컨텍스트의 코딩으로 되돌릴 수 있습니다.
안전하지 않은 키워드로 유형, 유형 멤버 또는 구문 블록을 표시하면 포인터 유형을 사용하고 해당 범위 내의 메모리에서 C++ 스타일 포인터 연산을 수행 할 수 있으며 관리 대상 내에서이를 수행 할 수 있습니다. 실행 프레임 워크. 안전하지 않은 코드는 해당하는 안전한 구현보다 빠르게 실행될 수 있습니다.
unsafe void BlueFilter (int[,] bitmap)
{
int length = bitmap.Length;
fixed (int* b=bitmap)
{
int* p=b;
for (int i=0, i<length; i++)
*p++ &= 0xFF;
}
}
(Source) 당신은 또한 살펴 것을에서 별도로
: 여기
은 요컨대 책 C# 4.0에서 오는 좋은, 간단한 예제입니다 이 SO 질문에감사합니다. 그러나 GPU를 유용하게 사용하는 방법은 무엇입니까? – johnshaddad
@johnshaddad | 개발자는 직접 벤더가 매니지드 API를 제공하지 않고 x86/x64 기반 명령어 세트를 가지고 있지 않으며, NVIDIA는 CUDA를 제공하지만 C++ 만 지원하므로 GPU를 활용합니다. Interop 레이어를 만들 수 있지만 병렬 처리를 사용하면 훨씬 간단합니다 :) –
실시간으로 HD 이미지를 처리하는 것은 어떨까요? HD로 찍은 비디오 에서처럼 라이브로 처리하고 싶습니다 (예 : 사진을 뒤집거나 다른 작업하기). 튜토리얼 또는 샘플 코드를 사용하면 이러한 경우에 가장 적합한 포인터를 찾을 수 있습니까? 감사합니다 – johnshaddad
벡터는 1 x n 행렬입니다. 합계와 곱셈을위한 메소드로 Matrix 클래스를 만듭니다.
public class Matrix
{
private int[,] m_array;
public Matrix(int m, int n)
{
m_array = new int[m, n];
}
public Matrix(int[,] other)
{
m_array = other;
}
public Matrix Mult(Matrix other)
{
if (this.m_array.GetLength(1) != other.m_array.GetLength(0))
return null;
int[,] res = new int[this.m_array.GetLength(0), other.m_array.GetLength(1)];
for (int i = 0; i < this.m_array.GetLength(0); ++i)
for (int j = 0; j < other.m_array.GetLength(1); ++j)
{
int s = 0;
for (int k = 0; k < this.m_array.GetLength(1); ++k)
s += this.m_array[i, k] * other.m_array[k, j];
res[i, j] = s;
}
return new Matrix(res);
}
}
감사. 그러나 GPU를 유용하게 사용하는 방법은 무엇입니까? – johnshaddad
100 % 확신 할 수는 없지만 사용할 수있는 기본 제공 Matrix 클래스가 있어야합니다. –
더 빠른 이미지 처리 기능을 사용하기 위해 GPU를 사용하고자합니다. – johnshaddad