필자는 정확하게 그려야 할 분산 그래프 데이터를 가지고 있습니다. 실제 데이터는 데이터 격자입니다.데이터를 정확하게 (선없이) 텍스처 또는 오르토 프로젝션 또는 다른 것으로 플로팅 하시겠습니까?
모든 그래프 데이터를 vbo에 넣고 점으로 그리면 데이터 포인트 사이에 선이 생깁니다.
화면 공간으로의 변환과 관련이 있다고 생각합니다. 그러므로 나는 투영 행렬을 적용 할 필요가있다.
임 내가 직교 투사를 원하지만 현재 내 직교 행렬 생성에 버그를 갖고있는 것 같다 확인 :
void OrthoMatrix(float[] matrix, float left, float right, float top, float bottom, float near, float far)
{
float r_l = right - left;
float t_b = top - bottom;
float f_n = far - near;
float tx = - (right + left)/(right - left);
float ty = - (top + bottom)/(top - bottom);
float tz = - (far + near)/(far - near);
matrix[0] = 2.0f/r_l;
matrix[1] = 0.0f;
matrix[2] = 0.0f;
matrix[3] = tx;
matrix[4] = 0.0f;
matrix[5] = 2.0f/t_b;
matrix[6] = 0.0f;
matrix[7] = ty;
matrix[8] = 0.0f;
matrix[9] = 0.0f;
matrix[10] = 2.0f/f_n;
matrix[11] = tz;
matrix[12] = 0.0f;
matrix[13] = 0.0f;
matrix[14] = 0.0f;
matrix[15] = 1.0f;
}
하지만 그것을 밖으로 작동하지 않을 수 있습니다. 내 쉐이더는 다음과 같습니다.
gl_Position = projectionMatrix * vec4 (위치, 0, 1.0);
동료 :
내 데이터 (서브 세트)
-15.9 -9.6
-15.8 -9.6
-15.7 -9.6
-15.6 -9.6
-16.4 -9.5
-16.3 -9.5
-16.2 -9.5
-16.1 -9.5
-16 -9.5
-15.9 -9.5
좌측의 이미지 올바른 (그러나 라인) 및 우측 이미지처럼 플롯은 오르토 함께 처음에는 데이터를 플롯 영역을 따르는 비트 맵에 넣고로드하는 것이 좋습니다. 어떤 정도는 어느 정도 이해가되지만 그것은 한 걸음 뒤로 향하는 것처럼 보입니다. 특히 이미지가 여전히 "뻗어"있고 현실에서 우리는 그 틈을 채우고 있습니다.
편집 glm.net을 사용하여 절벽 투영을 시도했는데 정확히 원하는 방식으로 작동합니다.
절두체 기능은 오르토와 비슷한 매개 변수를 사용하는 것처럼 보입니다. 나는 그 시간에 가서 투영 매트릭스에 대해 조금 더 읽었다 고 생각합니다!
누군가 내가 이상한 이미지를 설명 할 수 있다면 (오르토) 환상적 일 것입니다.
편집 2 이제 확대/축소를 추가하고 있습니다. 동일한 줄을보고 있습니다. 쿼드로 그려야하거나 포인트 크기를 줌 레벨에 매핑해야합니다.
외모에 의해 수동으로 작성된 직교 투영 행렬이 전치됩니다. OpenGL은 열 주요 인덱싱을 사용하지만 매트릭스는 행 인덱스로 인덱싱됩니다. 그것은 또한 당신의 "ortho"투영의 이상한 외모를 설명 할 것입니다. – datenwolf