DirectX로 화면 분할
이와 같이 DirectX로 화면 분할하는 방법을 소개합니다.
개요
DirectX는 그릴 때 다양한 행렬을 사용하지만, 그 중 하나에 뷰포트 행렬이라는 것이 있습니다. 이 뷰포트 행렬을 그리기 전에 설정함으로써 화면 분할을 할 수 있습니다.
코드
const float FRAME_BUFFER_W = 1280.0f; //フレームバッファの幅。
const float FRAME_BUFFER_H = 720.0f; //フレームバッファの高さ。
Model* modelList; //3Dモデルのリスト
ID3D11DeviceContext* d3dDeviceContext; //D3D11デバイスコンテキスト、初期化済みとする
D3D11_VIEWPORT viewPorts[2]; //分割ビューポート、これをモデルの描画前に設定する
//ビューポート初期化
{
//これが上画面
viewPorts[0].Width = FRAME_BUFFER_W; //画面の横サイズ
viewPorts[0].Height = FRAME_BUFFER_H / 2; //画面の縦サイズ
viewPorts[0].TopLeftX = 0; //画面左上のx座標
viewPorts[0].TopLeftY = 0; //画面左上のy座標
viewPorts[0].MinDepth = 0.0f; //深度値の最小値
viewPorts[0].MaxDepth = 1.0f; //深度値の最大値
//これが下画面
viewPorts[1].Width = FRAME_BUFFER_W; //画面の横サイズ
viewPorts[1].Height = FRAME_BUFFER_H / 2; //画面の縦サイズ
viewPorts[1].TopLeftX = 0; //画面左上のx座標
viewPorts[1].TopLeftY = FRAME_BUFFER_H / 2; //画面左上のy座標
viewPorts[1].MinDepth = 0.0f; //深度値の最小値
viewPorts[1].MaxDepth = 1.0f; //深度値の最大値
}
//描画するぜ
{
//ビューポートの数だけfor文を回す
for(int i = 0; i < sizeof(viewPorts) / sizeof(viewPorts[0]); i++) {
//ビューポートを設定
d3dDeviceContext->RSSetViewports(1, viewPorts[i]);
//モデルを描画
for(Model* model : modelList) {
//描画
model->Draw();
}
}
}
Reference
이 문제에 관하여(DirectX로 화면 분할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akurobit/items/1619bc26010441b8008c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const float FRAME_BUFFER_W = 1280.0f; //フレームバッファの幅。
const float FRAME_BUFFER_H = 720.0f; //フレームバッファの高さ。
Model* modelList; //3Dモデルのリスト
ID3D11DeviceContext* d3dDeviceContext; //D3D11デバイスコンテキスト、初期化済みとする
D3D11_VIEWPORT viewPorts[2]; //分割ビューポート、これをモデルの描画前に設定する
//ビューポート初期化
{
//これが上画面
viewPorts[0].Width = FRAME_BUFFER_W; //画面の横サイズ
viewPorts[0].Height = FRAME_BUFFER_H / 2; //画面の縦サイズ
viewPorts[0].TopLeftX = 0; //画面左上のx座標
viewPorts[0].TopLeftY = 0; //画面左上のy座標
viewPorts[0].MinDepth = 0.0f; //深度値の最小値
viewPorts[0].MaxDepth = 1.0f; //深度値の最大値
//これが下画面
viewPorts[1].Width = FRAME_BUFFER_W; //画面の横サイズ
viewPorts[1].Height = FRAME_BUFFER_H / 2; //画面の縦サイズ
viewPorts[1].TopLeftX = 0; //画面左上のx座標
viewPorts[1].TopLeftY = FRAME_BUFFER_H / 2; //画面左上のy座標
viewPorts[1].MinDepth = 0.0f; //深度値の最小値
viewPorts[1].MaxDepth = 1.0f; //深度値の最大値
}
//描画するぜ
{
//ビューポートの数だけfor文を回す
for(int i = 0; i < sizeof(viewPorts) / sizeof(viewPorts[0]); i++) {
//ビューポートを設定
d3dDeviceContext->RSSetViewports(1, viewPorts[i]);
//モデルを描画
for(Model* model : modelList) {
//描画
model->Draw();
}
}
}
Reference
이 문제에 관하여(DirectX로 화면 분할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akurobit/items/1619bc26010441b8008c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)