daily update on 20230521 by nitload youmu, problem on coloring

This commit is contained in:
Nitload
2023-05-22 02:06:46 +08:00
parent 0b276537c9
commit e7261fbdf6
127 changed files with 20714 additions and 1087 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
using StgSharp.Geometries;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Text;
namespace StgSharp
{
public static unsafe partial class Geometry
{
public static unsafe Triangle InitTriagnle<T>(
vec3d vertex1,
vec3d vertex2,
vec3d vertex3
)where T:Triangle
{
Triangle t = new Triangle();
return t;
}
}
}
+10 -1
View File
@@ -6,7 +6,7 @@ using System.Text;
namespace StgSharp
{
internal static unsafe partial class IO
public static unsafe partial class internalIO
{
[DllImport("StgSharpGraphics.dll", EntryPoint = "initTriangle")]
internal static unsafe extern triangleVertexArray initTriangleVertex();
@@ -16,5 +16,14 @@ namespace StgSharp
[DllImport("StgSharpGraphics.dll", EntryPoint = "initPolygon5")]
internal static unsafe extern Polygon5VertexArray initPolygon5Vertex();
[DllImport("StgSharpGraphics.dll", EntryPoint = "inputTriangle")]
internal static unsafe extern void internalLoadTriangle(triangleVertexArray triangle);
public static unsafe void LoadTriangle(Triangle t)
{
internalLoadTriangle(t.vertexArray);
}
}
}
+5 -4
View File
@@ -1,13 +1,14 @@
using System;
using StgSharp.Graphics;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace StgSharp.Control.IO
namespace StgSharp
{
public static partial class IO
public static partial class internalIO
{
[DllImport("StgSharpGraphics.dll", EntryPoint = "initWindow")]
public static extern void Window(int width, int height);
public static extern void Window(Window win);
}
}
@@ -33,7 +33,7 @@ namespace StgSharp.Geometries
public unsafe Polygon4()
{
vertexPtrArray = IO.initPolygon4Vertex();
vertexPtrArray = internalIO.initPolygon4Vertex();
vertex01 = new Point(vertexPtrArray.vertex1);
vertex02 = new Point(vertexPtrArray.vertex2);
vertex03 = new Point(vertexPtrArray.vertex3);
@@ -1 +1 @@
using Steamworks;
using StgSharp.Control;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;

namespace StgSharp.Geometries
{
 public unsafe class Polygon5 : IPlainGeometry
 {
 internal Polygon5VertexArray vertexPtrAyyar;

 internal Point _refOrigin;
 internal readonly Point vertex1;
 internal readonly Point vertex2;
 internal readonly Point vertex3;
 internal readonly Point vertex4;
 internal readonly Point vertex5;
 internal readonly int _vertexCount;

 public override Point RefPoint01 => vertex1;

 public override Point RefPoint02 => vertex2;

 public override Point RefPoint03 => vertex3;

 internal GetLocationHandler movP01Operation = default;
 internal GetLocationHandler movP02Operation = default;
 internal GetLocationHandler movP03Operation = default;
 internal GetLocationHandler movP04Operation = default;
 internal GetLocationHandler movP05Operation = default;

 public GetLocationHandler MovP01Operation { get => movP01Operation; }
 public GetLocationHandler MovP02Operation { get => movP02Operation; }
 public GetLocationHandler MovP03Operation { get => movP03Operation; }
 public GetLocationHandler MovP04Operation { get => movP04Operation; }
 public GetLocationHandler MovP05Operation { get => movP05Operation; }

 public unsafe Polygon5()
 {
 vertexPtrAyyar = IO.initPolygon5Vertex();
 vertex1 = new Point(vertexPtrAyyar.vertex1);
 vertex2 = new Point(vertexPtrAyyar.vertex2);
 vertex3 = new Point(vertexPtrAyyar.vertex3);
 vertex4 = new Point(vertexPtrAyyar.vertex4);
 vertex5 = new Point(vertexPtrAyyar.vertex5);
 }

 public virtual vec3d movPoint01(uint tick)=> movP01Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint02(uint tick)=> movP02Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint03(uint tick)=> movP03Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint04(uint tick)=> movP04Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint05(uint tick)=> movP05Operation.Invoke(GameTimeLine.tickCounter._value);
 

 internal override void OnRender(uint tick)
 {
 uint nowTick = tick - BornTime;
 vertex1.Position = RefOrigin.Position + movPoint01(nowTick);
 vertex2.Position = RefOrigin.Position + movPoint02(nowTick);
 vertex3.Position = RefOrigin.Position + movPoint03(nowTick);
 vertex4.Position = RefOrigin.Position + movPoint04(nowTick);
 vertex5.Position = RefOrigin.Position + movPoint05(nowTick);
 }

 public override Line[] GetAllSides()
 {
 return new Line[5]
 {
 new Line(vertex1,vertex2),
 new Line(vertex2,vertex3),
 new Line(vertex3,vertex4),
 new Line(vertex4,vertex5),
 new Line(vertex5,vertex1)
 };
 }

 public override Plain GetPlain()
 {
 return new Plain(vertex1,vertex2,vertex3);
 }
 }
}

using Steamworks;
using StgSharp.Control;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;

namespace StgSharp.Geometries
{
 public unsafe class Polygon5 : IPlainGeometry
 {
 internal Polygon5VertexArray vertexPtrAyyar;

 internal Point _refOrigin;
 internal readonly Point vertex1;
 internal readonly Point vertex2;
 internal readonly Point vertex3;
 internal readonly Point vertex4;
 internal readonly Point vertex5;
 internal readonly int _vertexCount;

 public override Point RefPoint01 => vertex1;

 public override Point RefPoint02 => vertex2;

 public override Point RefPoint03 => vertex3;

 internal GetLocationHandler movP01Operation = default;
 internal GetLocationHandler movP02Operation = default;
 internal GetLocationHandler movP03Operation = default;
 internal GetLocationHandler movP04Operation = default;
 internal GetLocationHandler movP05Operation = default;

 public GetLocationHandler MovP01Operation { get => movP01Operation; }
 public GetLocationHandler MovP02Operation { get => movP02Operation; }
 public GetLocationHandler MovP03Operation { get => movP03Operation; }
 public GetLocationHandler MovP04Operation { get => movP04Operation; }
 public GetLocationHandler MovP05Operation { get => movP05Operation; }

 public unsafe Polygon5()
 {
 vertexPtrAyyar = internalIO.initPolygon5Vertex();
 vertex1 = new Point(vertexPtrAyyar.vertex1);
 vertex2 = new Point(vertexPtrAyyar.vertex2);
 vertex3 = new Point(vertexPtrAyyar.vertex3);
 vertex4 = new Point(vertexPtrAyyar.vertex4);
 vertex5 = new Point(vertexPtrAyyar.vertex5);
 }

 public virtual vec3d movPoint01(uint tick)=> movP01Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint02(uint tick)=> movP02Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint03(uint tick)=> movP03Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint04(uint tick)=> movP04Operation.Invoke(GameTimeLine.tickCounter._value);
 
 public virtual vec3d movPoint05(uint tick)=> movP05Operation.Invoke(GameTimeLine.tickCounter._value);
 

 internal override void OnRender(uint tick)
 {
 uint nowTick = tick - BornTime;
 vertex1.Position = RefOrigin.Position + movPoint01(nowTick);
 vertex2.Position = RefOrigin.Position + movPoint02(nowTick);
 vertex3.Position = RefOrigin.Position + movPoint03(nowTick);
 vertex4.Position = RefOrigin.Position + movPoint04(nowTick);
 vertex5.Position = RefOrigin.Position + movPoint05(nowTick);
 }

 public override Line[] GetAllSides()
 {
 return new Line[5]
 {
 new Line(vertex1,vertex2),
 new Line(vertex2,vertex3),
 new Line(vertex3,vertex4),
 new Line(vertex4,vertex5),
 new Line(vertex5,vertex1)
 };
 }

 public override Plain GetPlain()
 {
 return new Plain(vertex1,vertex2,vertex3);
 }
 }
}

@@ -36,7 +36,7 @@ namespace StgSharp.Geometries
public Triangle()
{
this.vertexArray = IO.initTriangleVertex();
this.vertexArray = internalIO.initTriangleVertex();
this.vertex1 = new Point(vertexArray.vertex1Ptr);
this.vertex2 = new Point(vertexArray.vertex2Ptr);
this.vertex3 = new Point(vertexArray.vertex3Ptr);
+17
View File
@@ -0,0 +1,17 @@
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace StgSharp.Graphics
{
[StructLayout(LayoutKind.Sequential)]
public struct Window
{
public int width;
public int height;
public vec4d windowColor;
public string name;
}
}
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
57908071039ce5d71dc705d28cfaa6c0724c9204
a4558088b0c5bcb83216471530b205191f8c14aa
+10 -1
View File
@@ -20,7 +20,16 @@ internal class Program
Triangle t = new Triangle();
Console.WriteLine(t.RefPoint01.Position);
Console.WriteLine(t.RefPoint01.Position);
t.RefPoint01.Position = new vec3d(0,0.5f,0);
Window w = new Window();
w.width = 800;
w.height = 600;
w.name = "StgSharp";
w.windowColor = new vec4d(0.1f,0.3f,0.4f,1.0f);
//internalIO.LoadTriangle(t);
internalIO.Window(w);
}
}
+94 -78
View File
@@ -11,22 +11,7 @@
extern float* triangleVertexes;
const char *vertexShaderSource =
"#version 460 core\n"
"layout (location = 0) in vec3 aPos\n"
"void main()\n"
"(\n"
"gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
")\n";
const char* fragmentShaderSource =
"#version 460 core\n"
"out vec4 FragColor\n"
"void main()\n"
"{\n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n"
;
int version[4] = { 0,0,0,0 };
STGSHARPGRAPHICS_API int* versionInfo = &version;
@@ -45,23 +30,65 @@ STGSHARPGRAPHICS_API IOpackage initPackage(void)
return pack;
}
STGSHARPGRAPHICS_API int initWindow(int width, int height)
STGSHARPGRAPHICS_API int initWindow(basicWindowInfo info)
{
printf("%f,%f,%f,%f,", info.backgroundColor[0], info.backgroundColor[1], info.backgroundColor[2], info.backgroundColor[3]);
const char* vertexShaderSource =
"#version 460 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
"gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\n";
const char* fragmentShaderSource =
"#version 460 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n"
;
float triangle[] =
{
0,0.5f,0,
-0.5f,-0.5f,0,
0.5f,-0.5f,0,
};
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif // __APPLE__
GLFWwindow* window = glfwCreateWindow(info.width, info.height, info.name, NULL, NULL);
if (window == NULL)
{
printf("Failed to create GLFW window");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
printf("Failed to initialize GLAD");
return -1;
}
//编译顶点着色器
unsigned int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader,1,&vertexShaderSource,NULL);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
int success;
char infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
if (!success)
{
glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
printf("\i",infoLog);
}
//编译片段着色器
@@ -91,7 +118,7 @@ STGSHARPGRAPHICS_API int initWindow(int width, int height)
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, triangleVertices, GL_STATIC_DRAW);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, triangle, GL_STATIC_DRAW);
//创建顶点数组实例
@@ -100,67 +127,53 @@ STGSHARPGRAPHICS_API int initWindow(int width, int height)
glBindVertexArray(VAO);
// 2. 把顶点数组复制到缓冲中供OpenGL使用
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, triangleVertices, GL_STATIC_DRAW);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, triangle, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
/**/
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif // __APPLE__
while (!glfwWindowShouldClose(window))
{
// input
// -----
GLFWwindow* window = glfwCreateWindow(width, height, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
printf("Failed to create GLFW window");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// render
// ------
glClearColor(
info.backgroundColor[0],
info.backgroundColor[1],
info.backgroundColor[2],
info.backgroundColor[3]
);
glClear(GL_COLOR_BUFFER_BIT);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
printf("Failed to initialize GLAD");
return -1;
}
// draw our first triangle
/**/
glUseProgram(shaderProgram);
glBindVertexArray(VAO); // seeing as we only have a single VAO there's no need to bind it every time, but we'll do so to keep things a bit more organized
glDrawArrays(GL_TRIANGLES, 0, 3);
//glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
// glBindVertexArray(0); // no need to unbind it every time
/**/
// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
// -------------------------------------------------------------------------------
glfwSwapBuffers(window);
glfwPollEvents();
}
while (!glfwWindowShouldClose(window))
{
// input
// -----
// glfw: terminate, clearing all previously allocated GLFW resources.
// ------------------------------------------------------------------
glfwTerminate();
// render
// ------
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
/**/
//glDeleteVertexArrays(1, &VAO);
glDeleteBuffers(1, &VBO);
//glDeleteBuffers(1, &EBO);
glDeleteProgram(shaderProgram);
/**/
// draw our first triangle
glUseProgram(shaderProgram);
glBindVertexArray(VAO); // seeing as we only have a single VAO there's no need to bind it every time, but we'll do so to keep things a bit more organized
//glDrawArrays(GL_TRIANGLES, 0, 6);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
// glBindVertexArray(0); // no need to unbind it every time
// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
// -------------------------------------------------------------------------------
glfwSwapBuffers(window);
glfwPollEvents();
}
// glfw: terminate, clearing all previously allocated GLFW resources.
// ------------------------------------------------------------------
glfwTerminate();
//glDeleteVertexArrays(1, &VAO);
glDeleteBuffers(1, &VBO);
//glDeleteBuffers(1, &EBO);
glDeleteProgram(shaderProgram);
return 0;
return 0;
}
@@ -168,3 +181,6 @@ void renderTriangle()
{
}
@@ -21,7 +21,7 @@
extern STGSHARPGRAPHICS_API int* versionInfo;
STGSHARPGRAPHICS_API int fnStgSharpGraphics(void);
STGSHARPGRAPHICS_API int initWindow(int width, int height);
STGSHARPGRAPHICS_API int initWindow(basicWindowInfo info);
STGSHARPGRAPHICS_API IOpackage initPackage(void);
STGSHARPGRAPHICS_API TriangleVertexHandler initTriangle(void);
@@ -134,6 +134,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalDependencies>glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(projectdir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -155,6 +156,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalDependencies>glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(projectdir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
+8
View File
@@ -13,5 +13,13 @@ typedef struct internalIO
void (*InitWindow)(int width,int height);
}IOpackage;
typedef struct basicWindowInfo
{
int width;
int height;
float backgroundColor[4];
char name[];
}basicWindowInfo;
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.