Lines


3D Lines

You may render 3D lines in a DirectX application using device->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST);
Usted puede dibujar líneas en tres dimensiones en una aplicación de DirectX usando device->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST);

Problem 1
Create a Wintempla DirectX application called SimpleLine to draw a 3D yellow line from (-1, 0, 0) to the point (0, 0, 0) and a green line from (0, 0, 0) to (0, 1, 0) in a black background. After creating the project add a new class called Line to store the two lines, Project > Add class... .
Cree una aplicación de Wintempla de DirectX llamada SimpleLine para dibujar una línea amarilla desde (-1, 0, 0) al punto (0, 0, 0) y una línea verde desde (0, 0, 0) al punto (0, 1, 0) en un fondo negro. Para este problema usted no necesitará ninguna matriz de transformación. Después de crear el proyecto agregue una nueva clase llamada Line para almacenar las dos líneas, Project > Add class... .

Step A
Edit the files Line.h and Line.cpp as shown.
Edite los archivos Line.h y Line.cpp como se muestra.

Line.h
#pragma once
class Line : public DX11::ColorVertexBuffer
{
public:
     Line();
     ~Line();
     DirectX::XMMATRIX world;
};


Line.cpp
#include "stdafx.h"
#include "Line.h"

Line::Line()
{
     world = DirectX::XMMatrixIdentity();
     if (Setup(4, 4, D3D11_USAGE_DEFAULT, D3D_PRIMITIVE_TOPOLOGY_LINELIST) == false) return;
     //___________________________________________________________1.1 Vertex setup: Line 1
     vertex[0].position = DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f);
     vertex[0].color = DirectX::XMFLOAT4(1.0f, 1.0f, 0.0f, 1.0f); // Yellow

     vertex[1].position = DirectX::XMFLOAT3(-1.0f, 0.0f, 0.0f);
     vertex[1].color = DirectX::XMFLOAT4(1.0f, 1.0f, 0.0f, 1.0f); // Yellow
     //___________________________________________________________1.2. Vertex setup: Line 2
     vertex[2].position = DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f);
     vertex[2].color = DirectX::XMFLOAT4(0.0f, 1.0f, 0.0f, 1.0f); // Green

     vertex[3].position = DirectX::XMFLOAT3(0.0f, 1.0f, 0.0f);
     vertex[3].color = DirectX::XMFLOAT4(0.0f, 1.0f, 0.0f, 1.0f); // Green
     //___________________________________________________________2. Index setup
     index[0] = 0;
     index[1] = 1;
     index[2] = 2;
     index[3] = 3;
}

Line::~Line()
{
}

Step B
Edit the file SimpleLine.h by including the file Line.h and creating one object of the Line class.
Edite el archivo SimpleLine.h incluyendo el archivo Line.h y creando un objeto de la clase Line.

SimpleLine.h
#pragma once //______________________________________ SimpleLine.h
#include "Resource.h"
#include "Line.h"
class SimpleLine: public . . .
{
public:
     . . .
     //____________________________________________________ 1. Application
     Line line;
     . . .
};


Step C
Edit the file SimpleLine.cpp by creating the vertex buffer and then rendering the buffer using the color shader.
Edite el archivo SimpleLine.cpp creando el buffer de vértices y entonces renderizando el usando el color shader.

SimpleLine.cpp
void SimpleLine::Window_Open(Win::Event& e)
{
     . . .
     //________________________________________________________________ 5. Setup the application objects
     line.Create(hWnd, device);
}

void SimpleLine::RenderScene()
{
     . . .
     //________________________________________________ 2. Render the two lines using the Color Shader
     line.Render(deviceContext);
     colorShader.Render(deviceContext, line.GetIndexCount(), line.world, camera);
     . . .
}


SimpleLineRun

Problem 2
Create a Wintempla DirectX application called RotCube to draw a 3D green cube using D3D11_PRIMITIVE_TOPOLOGY_LINELIST. The green cube must slowly rotate around the y-axis. To draw a cube, you need only eight points and 24 indexes. After creating the project, add a new class called Cube to store the vertex and indexes of the cube. Use a color shader to draw the cube.
Cree una aplicación de Wintempla de DirectX llamada RotCube que dibuje un cubo verde usando D3D11_PRIMITIVE_TOPOLOGY_LINELIST. El cubo verde debe rotar lentamente alrededor del eje Y. Para dibujar un cubo, usted solo necesita ocho puntos y 24 índices. Después de crear el proyecto, agregue una nueva clase llamada Cube para almacenar los vértices y los índices del cubo. Use un shader de color para dibujar el cubo.

RotCubeRun1

RotCubeRun2

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home