통일 D3D 및 OpenGL 좌표 시스템

 

 

저자: 여행 (()

 

DirectX 3D과 OpenGL 좌표 시스템 차이, 우리에게 큰 번거로움을 가져다 줄 수 있도록 크로스 플랫폼 프로그래밍 하는 데에는 매우 곤혹스럽다.최근 한 개 크로스 플랫폼 게임, 자세히 다음 둘의 행렬 발견 하 고 별 차이가 없는 것이다 d3d 왼손 과 행렬 배달 줄 수 shader 다각형 완전히 정상적인 작업.

먼저 얘기 좀 둘 일부 개념 상의 차이:

(1)좌표 시스템 다르다

d3d 왼손 좌표, 다각형 오른손 좌표

(2)격자 선 순서 다르다

d3d 그래. 우선, 다각형 열 우선.이 두 개의 다른 직접 때문에 좌표 변환 순서 및 행렬 곱셈 순서 반대로 성.만약 먼저 크기 조정, 다시, 마지막 구성, 대응 행렬 각각 S, R · T 않으면 d3d 최종 행렬 m = s * r * r 위해 다각형 위해M = T * R * S

(3)감축 공간 z 순위 범위 다르다

d3d [0 1]. 예, 예, 다각형[-1, 1]

 

겉으로 보면 둘 매트릭스 큰 차이가 있지만 사실은 그렇지 않다.

1. 정도 손 좌표

그래픽 장치 대해 말하자면, 장치 좌표, 왼손 좌표 즉 가리키는 화면 안에 z z 값 더 큰 것을 시선을 더 먼 거리. 그래서 다각형 오른손 시스템 을 감축하다 공간 들어갈 때 어떻게 1개씩을 왼손 매다. 이 그러니까, 렌더링 관선 내부, 좌표 은 통일. 그게 왼손 좌표 행렬, 아니면 오른 좌표 행렬, 그냥 변환 까지 감축 공간 속 좀 왼손 학과 됩니다.

 

2.격자 선 순서

행 행렬, 열 행렬, 논리적 하나 또 하나의 바꾸다, 그러나 물리 스토어드 구조 에서 결국 완전히 일치한다.만약 한 병진 변환(x, y, z):

주의를 필요로 하는 것은 행렬 곱셈 관심 없어 행렬 실행할 행렬, 아니면 열 행렬, 모두 첫 행렬 되는 대로 가서 곱하기 두 번째 행렬.에 열 행렬 경우 이 바로 그 엉터리 지방 위해 보증 곱셈 의미 유효성 그 좌표 변환 순서에 따라 행렬의 곱셈 순서 마침 반대로.

또 조심 좀, shader 중 다각형 있는 행렬 곱셈 규칙에 따라 d3d 다르다.행렬의 곱셈 규칙에 (첫 번째 행렬 행 * 두 번째 행렬 모음):

d3d 행렬의 곱셈: Ma(0 1 2 3) * Mb(0 4 8 12)

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

opengl행렬의 곱셈: Ma(0 4 8 12) * Mb(0 1 2 3)

이에 대해 다각형 shader 경우 변환 순서에 따라 행렬의 곱셈 순서 여전히 반대.만약 우리가 할 수 있는 것이다 shader 전래 다각형 매트릭스 한 번 바꾸다 하면 그렇게 다각형 shader 있는 행렬 곱셈 의미가 따라 d3d 것이다 shader 완전히 일치한다!

 

3.수정 투영 행렬

다각형 때문에 정규직 감원은 공간 z 순위 범위 위해 [-1, 1] 따라 d3d 있는 [0, 1] 다르다, 우리 쉽게 사용할 수 d3d 투영 행렬, 반드시 다시 정의 d3d 투영 행렬.

 

void Matrix::perspectiveProjectionLH2( float fov, float aspectRatio,
        float nearPlane, float farPlane )
{
        float h = (1.0f / tanf(fov * 0.5f));
        float w = h / aspectRatio;

        float a = (farPlane + nearPlane) / (farPlane - nearPlane);
        float b = -2.0f * farPlane * nearPlane / (farPlane - nearPlane);
        
        m[0][0] = w; m[0][1] = 0; m[0][2] = 0; m[0][3] = 0;
        m[1][0] = 0; m[1][1] = h; m[1][2] = 0; m[1][3] = 0;
        m[2][0] = 0; m[2][1] = 0; m[2][2] = a; m[2][3] = 1;
        m[3][0] = 0; m[3][1] = 0; m[3][2] = b; m[3][3] = 0;
}


 

 

4.총화

사용 왼손 시스템 변환 와 통일 두 플랫폼 비교적 편리하다.총괄하여 다각형 렌더링 파이프 라인 수정 절차:

(1)는 부하 층 통일 사용 왼손 좌표 변환,

(2)수정 투영 행렬 에 맞 감축 공간 z 그래프 범위[-1, 1],

(3)행렬 이 전래 shader 때 는 행렬 바꾸다 행렬 유입,

(4)지금 shader 층, 통일 사용 왼손 좌표 변환.

만약 싶지 않다 shader 중 변환 수정, 단지 할 (1) 와 (2) 충분해.

 

5.많이 읽다

유도 투영 행렬 

다각형 d3d 단절 과 뛰어넘다.

 

[출처] http://www.programkr.com/blog/MEzMxADMwYT0.html

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
28 [Linux programming][turbo c] The libXbgi Library file 졸리운_곰 2023.02.05 248
27 [unix][linux][compiler] Yacc와 Lex 시작하기 file 졸리운_곰 2021.09.08 261
26 [Visual Studio 2019] Visual Studio로 Linux 원격 개발하기(Ubuntu 설치부터 SSH 서버접속까지) file 졸리운_곰 2021.08.29 235
25 [unix][emacs] 이맥스와 함께하는 개발환경 . emacs 튜토리얼 file 졸리운_곰 2021.08.18 319
24 [Linux][C/C++] cmake 사용법과 활용 file 졸리운_곰 2020.11.08 552
23 [CMake] Linux C/C++ cmake 시작하기 졸리운_곰 2020.11.08 398
22 [C++] CMake Build System file 졸리운_곰 2020.11.08 328
21 Windows 10에 한국어 입출력이 가능한 리눅스 데스크톱 설치하기 file 졸리운_곰 2020.06.29 289
20 wxwidgets 과 codeblock 설치(리눅스) 졸리운_곰 2019.12.25 228
19 ubuntu 18.04.2 LTS 개발환경 세팅 졸리운_곰 2019.12.25 223
18 Ubuntu 16.04 개발환경 세팅하기! 졸리운_곰 2017.03.21 356
17 tcl/tk 자료 secret 졸리운_곰 2017.02.23 0
16 CentOS xrdp 설정 (원격데스크탑) 졸리운_곰 2017.02.01 453
15 Five lightweight Linux desktop worlds for extreme open-sourcers file 졸리운_곰 2016.05.12 1022
14 Logging every shell command 졸리운_곰 2016.05.11 581
13 How to keep a detailed audit trail of what’s being done on your Linux systems file 졸리운_곰 2016.05.11 467
12 Docker의 소개와 간단한 사용법 file 졸리운_곰 2015.11.24 804
11 Make Self-Extracting Archives with makeself.sh 졸리운_곰 2015.11.07 363
10 리눅스 간단 배포 Linux simple deploy 제작 : make self file 졸리운_곰 2015.11.07 352
9 Joinc: Linux 커널에서의 디바이스 드라이버 작성 졸리운_곰 2015.06.16 833
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED