本文整理汇总了C#中Vertex.UnitLength方法的典型用法代码示例。如果您正苦于以下问题:C# Vertex.UnitLength方法的具体用法?C# Vertex.UnitLength怎么用?C# Vertex.UnitLength使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vertex
的用法示例。
在下文中一共展示了Vertex.UnitLength方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateNormalisationCubeMap
/// <summary>
/// Generates the normalisation cube map.
/// </summary>
/// <returns></returns>
private bool GenerateNormalisationCubeMap()
{
var gl = openGLControl1.OpenGL;
// First we create space to hold the data for a single face.
// Each face is 32x32, and we need to store the R, G and B components of the color at each point.
byte[] data = new byte[32 * 32 * 3];
// Some useful variables.
int size = 32;
float offset = 0.5f;
float halfSize = 16.0f;
Vertex tempVector = new Vertex();
uint byteCounter = 0;
// Positive x.
for (int j = 0; j < size; j++)
{
for (int i = 0; i < size; i++)
{
tempVector.X = (halfSize);
tempVector.Y = (-(j + offset - halfSize));
tempVector.Z = (-(i + offset - halfSize));
tempVector.UnitLength();
tempVector = tempVector.GetPackedTo01();
data[byteCounter++] = (byte)(tempVector.X * 255f);
data[byteCounter++] = (byte)(tempVector.Y * 255f);
data[byteCounter++] = (byte)(tempVector.Z * 255f);
}
}
// Set the texture image.
gl.TexImage2D(OpenGL.GL_TEXTURE_CUBE_MAP_POSITIVE_X,
0, OpenGL.GL_RGBA8, 32, 32, 0, OpenGL.GL_RGB, OpenGL.GL_UNSIGNED_BYTE, data);
//negative x
byteCounter = 0;
for (int j = 0; j < size; j++)
{
for (int i = 0; i < size; i++)
{
tempVector.X = (-halfSize);
tempVector.Y = (-(j + offset - halfSize));
tempVector.Z = ((i + offset - halfSize));
tempVector.UnitLength();
tempVector = tempVector.GetPackedTo01();
data[byteCounter++] = (byte)(tempVector.X * 255f);
data[byteCounter++] = (byte)(tempVector.Y * 255f);
data[byteCounter++] = (byte)(tempVector.Z * 255f);
}
}
gl.TexImage2D(OpenGL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
0, OpenGL.GL_RGBA8, 32, 32, 0, OpenGL.GL_RGB, OpenGL.GL_UNSIGNED_BYTE, data);
//positive y
byteCounter = 0;
for (int j = 0; j < size; j++)
{
for (int i = 0; i < size; i++)
{
tempVector.X = (i + offset - halfSize);
tempVector.Y = (halfSize);
tempVector.Z = ((j + offset - halfSize));
tempVector.UnitLength();
tempVector = tempVector.GetPackedTo01();
data[byteCounter++] = (byte)(tempVector.X * 255f);
data[byteCounter++] = (byte)(tempVector.Y * 255f);
data[byteCounter++] = (byte)(tempVector.Z * 255f);
}
}
gl.TexImage2D(OpenGL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
0, OpenGL.GL_RGBA8, 32, 32, 0, OpenGL.GL_RGB, OpenGL.GL_UNSIGNED_BYTE, data);
//negative y
byteCounter = 0;
for (int j = 0; j < size; j++)
{
for (int i = 0; i < size; i++)
{
tempVector.X = (i + offset - halfSize);
tempVector.Y = (-halfSize);
tempVector.Z = (-(j + offset - halfSize));
tempVector.UnitLength();
tempVector = tempVector.GetPackedTo01();
data[byteCounter++] = (byte)(tempVector.X * 255f);
data[byteCounter++] = (byte)(tempVector.Y * 255f);
data[byteCounter++] = (byte)(tempVector.Z * 255f);
//.........这里部分代码省略.........