render little thumbnails for each loaded image
This commit is contained in:
parent
6fc66aba8f
commit
225a1a623c
58
Program.cs
58
Program.cs
@ -221,18 +221,18 @@ public class Game : GameWindow {
|
||||
protected override void OnLoad() {
|
||||
base.OnLoad();
|
||||
|
||||
GL.ClearColor(0.2f, 0.3f, 0.3f, 1.0f);
|
||||
GL.ClearColor(0.0f, 0.0f, 0.05f, 1.0f);
|
||||
|
||||
VertexArrayObject = GL.GenVertexArray();
|
||||
GL.BindVertexArray(VertexArrayObject);
|
||||
|
||||
VertexBufferObject = GL.GenBuffer();
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
|
||||
|
||||
ElementBufferObject = GL.GenBuffer();
|
||||
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.DynamicDraw);
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, ElementBufferObject);
|
||||
GL.BufferData(BufferTarget.ElementArrayBuffer, indices.Length * sizeof(uint), indices, BufferUsageHint.StaticDraw);
|
||||
GL.BufferData(BufferTarget.ElementArrayBuffer, indices.Length * sizeof(uint), indices, BufferUsageHint.DynamicDraw);
|
||||
|
||||
shader = new Shader();
|
||||
shader.Use();
|
||||
@ -257,7 +257,7 @@ public class Game : GameWindow {
|
||||
foreach (string file in files) {
|
||||
if (file.ToLower().EndsWith(".jpg")) {
|
||||
textures.Add(new Texture(file));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -269,11 +269,25 @@ public class Game : GameWindow {
|
||||
base.OnRenderFrame(e);
|
||||
frameCount++;
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit);
|
||||
GL.BindVertexArray(VertexArrayObject);
|
||||
|
||||
SetVertices(0, 0, windowWidth - 152, windowHeight);
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.DynamicDraw);
|
||||
GL.ActiveTexture(TextureUnit.Texture0);
|
||||
GL.BindTexture(TextureTarget.Texture2D, textures[textureIndex].Handle);
|
||||
shader.Use();
|
||||
GL.DrawElements(PrimitiveType.Triangles, indices.Length, DrawElementsType.UnsignedInt, 0);
|
||||
|
||||
for (int i = 0; i < textures.Count; i++) {
|
||||
SetVertices(windowWidth - 150, i * 100, windowWidth, i * 100 + 98);
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.DynamicDraw);
|
||||
GL.ActiveTexture(TextureUnit.Texture0);
|
||||
GL.BindTexture(TextureTarget.Texture2D, textures[i].Handle);
|
||||
shader.Use();
|
||||
GL.DrawElements(PrimitiveType.Triangles, indices.Length, DrawElementsType.UnsignedInt, 0);
|
||||
}
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
|
||||
@ -287,6 +301,36 @@ public class Game : GameWindow {
|
||||
GL.UniformMatrix4(shader.GetUniformLocation("projection"), true, ref projection);
|
||||
GL.Viewport(0, 0, windowWidth, windowHeight);
|
||||
}
|
||||
|
||||
private void SetVertices(float left, float top, float right, float bottom) {
|
||||
// top left
|
||||
vertices[0] = left;
|
||||
vertices[1] = top;
|
||||
vertices[2] = 0f;
|
||||
vertices[3] = 0f;
|
||||
vertices[4] = 0f;
|
||||
|
||||
// top right
|
||||
vertices[5] = right;
|
||||
vertices[6] = top;
|
||||
vertices[7] = 0f;
|
||||
vertices[8] = 1f;
|
||||
vertices[9] = 0f;
|
||||
|
||||
// bottom right
|
||||
vertices[10] = right;
|
||||
vertices[11] = bottom;
|
||||
vertices[12] = 0f;
|
||||
vertices[13] = 1f;
|
||||
vertices[14] = 1f;
|
||||
|
||||
// bottom left
|
||||
vertices[15] = left;
|
||||
vertices[16] = bottom;
|
||||
vertices[17] = 0f;
|
||||
vertices[18] = 0f;
|
||||
vertices[19] = 1f;
|
||||
}
|
||||
}
|
||||
|
||||
static class Program {
|
||||
|
Loading…
Reference in New Issue
Block a user