Stripify Mesh

Open
#17 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp

Research direction

Start by locating OptimizeFaces and the existing index-buffer topology handling in the DirectXMesh codebase. Review the linked triangle-strip references and determine the intended API and conversion behavior. Done means triangle-list index buffers can be converted to triangle strips while preserving the mesh correctly; no test file is named in the issue.

Written by the indexing model from the issue text.

Description

proposal

The original D3DX mesh optimize function supported an option for stripifying D3DXMESHOPT_STRIPREORDER. We support this with OptimizeFaces (passing 0 for the vertexCache size), but the resulting IB is still a triangle list as was the case in the original D3DX library.

This proposed function would convert index buffers from D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST to D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP. See Wikipedia

On older generation GPU hardware, using triangle strips over triangle lists was a performance win. This is no longer true on modern GPUs even mobile platforms. While it does result in slightly smaller indices, it is generally far more useful to use triangle lists and optimized for vertex cache reuse. The main reason to include this functionality in DirectXMesh is for completeness and for creating performance references.

NvTriStrip

Stewart, J. "Tunneling for Triangle Strips" PDF

Evans, F., Skiena, S., Varshney, A.; "Optimizing triangle strips for fast rendering", Visualization 1996. PDF

Akeley, K., Haeberli, P., Burns, D.; tomesh.c. C Program on SGI Developer's Toolbox CD, 1990

Dominant language
C++
Stars
860
Forks
169
Avg merge
9h 49m
Merged PRs (30d)
4

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/DirectXMesh

All issues in microsoft/DirectXMesh

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.