Nos últimos dias, alguns usuários encontraram um erro de linha triangular DirectX. Esse problema ocorre devido a uma quantidade de fatores. Vamos discutir algumas delas abaixo.
Aprovado: Fortect
- 2 modelos lidos
Uma faixa triangular é um conjunto por causa de triângulos conectados entre si. Uma vez que os triângulos são conectados, uma boa aplicação prática não precisa especificar novamente dois vértices para quase todos os triângulos. Para demonstrar essa habilidade, você só precisa de sete vértices apontando para uma próxima faixa triangular específica.
O sistema usa vértices v1, v2 e v3, você pode desenhar o primeiro triângulo da pessoa; v2, assim como v4, v3 desenha o segundo triângulo; v3 combinada agora com v4, v5 para desenhar a terceira; v4, v6 e, conseqüentemente, também v5 para desenhar o quarto; em cima disso, respectivamente. Observe que os vértices entre o segundo e o quarto triângulos são transversais; Isso é para garantir que todos os triângulos sejam usados no sentido horário.
A maioria dos mercados de papelão em objetos consiste em listras triangulares. Na verdade, fitas de torta podem ser usadas. Defina objetos complexos de uma maneira específica para usar a memória com eficiência com tempo de processamento. Próxima
O código mostra a maneira mais fácil de criar vértices para esta árvore Uma faixa de combustível fóssil.
Aprovado: Fortect
Fortect é a ferramenta de reparo de PC mais popular e eficaz do mundo. Milhões de pessoas confiam nele para manter seus sistemas funcionando de forma rápida, suave e livre de erros. Com sua interface de usuário simples e mecanismo de verificação poderoso, o Fortect localiza e corrige rapidamente uma ampla gama de problemas do Windows, desde instabilidade do sistema e problemas de segurança até gerenciamento de memória e gargalos de desempenho.
Estrutura CUSTOMVERTEXX, y, unces flutuam;;Vértices CUSTOMVERTEX [] = -5,0, -5,0, 0, 0, 0,0, 5,0, 0,0, 5,0, -5,0, 0,0, 10,0, 5,0, 0,0, 15,0, -5,0, 0,0, 20,0, 5,0, 0,0;
O exemplo de código a seguir mostra como esse triângulo pode ser renderizado no Direct3D 9 usando IDirect3DDevice9 :: DrawPrimitive .
//// Assumimos que d3dDevice é válido// Ponteiro para a interface IDirect3DDevice9.//d3dDevice-> DrawPrimitive (0, d3dpt_trianglestrip, 4);
Use as melhores listras circulares para fazer triângulos que provavelmente estão conectados. Para escrever isso, especifique um triângulo de transformação (que deve ser um triângulo de casa zero) ao redor da lista de triângulos. Isso cria uma linha entre os dois triângulos que provavelmente não será exibida. Para exibir apenas os últimos triângulos do exemplo anterior, ajuste o buffer de vértices como mostrado aqui:
CUSTOMVERTEX = Vértices [] -5,0, -5,0, zero. 0, 0,0, 5,0, 0,0, 5,0, -5,0, 0, 0, 5,0, -5,0, 0,0, triângulo // degenerado 10,0, 5,0, 0,0, triângulo // degenerado 10,0, 5,0, 0,0, 15,0, -5,0, 0,0, 20,0, 5,0, 0,0;
- 2 para ler.
O Direct3D e a trilha suportam vários tipos de base (ou topologias), que permanecem representados como resultado do tipo de enumeração D3D_PRIMITIVE_TOPOLOGY . Esses tipos de projetos de vértices são interpretados e exibidos pelo transportador.
- Tipos primitivos básicos
- Quarto primitivo
- Trilha de rotação adicional, posição do vértice da cabeça
- Gerar várias tiras
- Tópico relacionado
Tipos primitivos básicos
Para a renderização real de cada tipo primitivo, veja o diagrama abaixo nesta seção em direção de enrolamento e definindo posições de vértice .
A função de montador de entrada lê dados dos buffers de índice de vértice, concatena cada um de nossos dados nesses primitivos e, em seguida, entrega os dados aos estágios de visualização do transportador. (Você pode usar facilmente a maioria dos métodos ID3D11DeviceContext :: IASetPrimitiveTopology para especificar frequentemente o tipo antigo para o local do conjunto de entrada de adjacência
Todos)
Tipos primitivos Direct3D 10 e superior (exceto para a lista de tópicos) estão disponíveis em duas versões: Tipo simples com vizinhos e tipos primitivos sem vizinhos. Primitivos de vizinhança incluem alguns dos vértices circundantes, enquanto os primitivos não vizinhos contêm apenas os vértices desse primitivo alvo. Exemplo: O primitivo do catálogo de strings (representado pelo valor D3D_PRIMITIVE_TOPOLOGY_LINELIST) tem um primitivo da lista de strings correspondente que incluirá a adjacência (representado pelo valor D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ).
Primitivos adjacentes podem fornecer informações adicionais sobre sua geometria e são visíveis apenas com o sombreador de geometria. Adjacência é útil para sombreadores de geometria que usam detecção de silhueta, extrusão de volume escuro etc.
Por exemplo, você pode desenhar um triângulo com um quarto. Uma lista triangular contendo 36 vértices (com Neighboursohm) proporcionará um descanso acessível com primitivos fechados. Os primitivos de adjacência (exceto listras de tipo) contêm exatamente duas vezes mais vértices do que o equivalente primitivo não adjacente, em que cada vértice adicional é um vértice adjacente.
Direção do enrolamento e posição da cabeça
Conforme mostrado na figura a seguir, o vértice da cabeça é tratado como o primeiro vértice não contíguo do antigo. Primitivos Um tipo pode ter vários grandes vértices de cardinalidade se cada um for usado para diversos tipos de primitivos. Para uma fita triangular funcional com uma única adjacência, os vértices superiores são 0, 2, um número de, 6, etc. Para uma faixa linear que leva em consideração a vizinhança, as extremidades de todos os vértices são 1, par, 3 , etc. Pelo contrário, o outro antiquado vizinho não tem nenhum vértice racionalmente …
A figura a seguir desempenha a aquisição de vértices para todos os tipos com relação às primitivas que um montador de entrada pode produzir. Símbolos
Todas as ilustrações acima são ilustradas na tabela abaixo.
Criação de várias bandas
Você pode criar várias faixas de clareamento cortando as faixas. Você pode cortar um entalhe chamando explicitamente usando a função HLSL RestartStrip ou inserindo qualquer valor de índice incomum no fluxo de índice. O valor é -1, que provavelmente é 0xffffffff sobre índices de 32 bits ou 0xffff para índices de 16 bits. O índice -1 indica um fantástico “desligamento” ou “reinicialização” vinculado à corrente dessas fitas. Anterior
Um nível circular é uma série de triângulos conectados de virtualmente qualquer malha triangular que compartilha vértices para fazer um uso mais eficiente da memória gráfica do computador. Elas sempre foram mais eficientes do que as listas triangulares não indexadas, mas tendem a ser tão naturais ou mais lentas do que as listas triangulares encontradas.
Triangle Fan é uma imagem primitiva de infográfico em 3D que pode armazenar espaço e também economizar tempo de processamento. Ele descreve um teorema que usa triângulos conectados dos quais compartilham um vértice de base comum (em oposição a ajudá-lo a uma faixa triangular, que atualmente conecta o vértice futuro com os dois últimos vértices usados quando você precisa formar um triângulo).
glStart (GL_TRIANGLES); glColor3f (0,1, 0,2, 0, 3); glVertex3f (0, 0, 0); glVertex3f (1, 0, 0); glVertex3f (0, 1, 0); glEnd (); Isso dá a alguém triângulos sombreados horizontais, não iluminados e não estruturados. Você também pode capturar triângulos, quadrados e polígonos modificando dramaticamente, eu diria, o valor que você passa para glBegin.