- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在使用适用于 .NET 的 OpenTK 库来处理 OpenGL,编写我自己的引擎。我放置了 3 个不同的物体,一个旋转的立方体和 2 个相邻的立方体。在我更改对象顶部四边形的颜色之前,一切似乎都运行良好。
我正在渲染顶部为绿色的立方体,在左侧,背面的方 block 被渲染在前面的方 block 之上。我似乎无法找出哪里出了问题,当相机设置为从另一侧看时,它会正确渲染。
以下是类中的相关代码,省略了不相关或不相关的方法、属性和属性:
GameState.cs
class GameState : State
{
// TEMP: Test Block
SimpleBlock block;
int i = 0;
public override void Render()
{
base.Render();
// Set OpenGL Settings
GL.Viewport(0, 0, 1024, 768);
GL.Enable(EnableCap.CullFace);
// Reset the Matrices
Matrices.ClearMatrices();
// Set Camera Settings (Field of view in radians)
Matrices.ProjectionMatrix = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 2, (1024.0f / 768.0f), 1, 1000);
// Create the Camera
// this has to be in reverse
Matrix4 viewMatrix = Matrix4.CreateRotationX((float)Math.PI/8);
viewMatrix = viewMatrix.Translate(0, -2, -4);
// Multiply it with the ModelView (Which at this point is set to a value that we can just use = and it has the same result)
Matrices.ModelViewMatrix = viewMatrix;
// Render the Block
Matrices.Push();
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Translate(2, 0, 0);
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Translate(0.5f, 0, 0.5f);
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Rotate(0, i / 40.0f, 0);
block.Render();
Matrices.Pop();
// Render the Block Again Twice
Matrices.Push();
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Translate(-2, 0, 0);
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Translate(0.5f, 0, 0.5f);
block.Render();
Matrices.ModelViewMatrix = Matrices.ModelViewMatrix.Translate(0, 0, -1);
block.Render();
Matrices.Pop();
// Increment Rotation Test Variable
i++;
}
}
SimpleBlock.cs
class SimpleBlock : IBlock
{
public void Render()
{
// Send the Shader Parameters to the GPU
Shader.Bind();
Shader.SendMatrices();
// Begin Rendering the Polys
GL.Begin(BeginMode.Triangles);
// Front Quad
Shader.SetColor(Color4.SaddleBrown);
GL.Normal3(0, 0, 1);
GLUtils.QuadVertices(
new Vector3(-0.5f, 1, 0.5f),
new Vector3(-0.5f, 0, 0.5f),
new Vector3( 0.5f, 1, 0.5f),
new Vector3( 0.5f, 0, 0.5f));
// Right Quad
GL.Normal3(1, 0, 0);
GLUtils.QuadVertices(
new Vector3(0.5f, 1, 0.5f),
new Vector3(0.5f, 0, 0.5f),
new Vector3(0.5f, 1, -0.5f),
new Vector3(0.5f, 0, -0.5f));
// Back Quad
GL.Normal3(0, 0, -1);
GLUtils.QuadVertices(
new Vector3( 0.5f, 1, -0.5f),
new Vector3( 0.5f, 0, -0.5f),
new Vector3(-0.5f, 1, -0.5f),
new Vector3(-0.5f, 0, -0.5f));
// Left Quad
GL.Normal3(-1, 0, 0);
GLUtils.QuadVertices(
new Vector3(-0.5f, 1, -0.5f),
new Vector3(-0.5f, 0, -0.5f),
new Vector3(-0.5f, 1, 0.5f),
new Vector3(-0.5f, 0, 0.5f));
// Bottom Quad
GL.Normal3(0, -1, 0);
GLUtils.QuadVertices(
new Vector3(-0.5f, 0, 0.5f),
new Vector3(-0.5f, 0, -0.5f),
new Vector3( 0.5f, 0, 0.5f),
new Vector3( 0.5f, 0, -0.5f));
// Top Quad
Shader.SetColor(Color4.Green);
GL.Normal3(0, 1, 0);
GLUtils.QuadVertices(
new Vector3(-0.5f, 1, -0.5f),
new Vector3(-0.5f, 1, 0.5f),
new Vector3(0.5f, 1, -0.5f),
new Vector3(0.5f, 1, 0.5f));
// Done!
GL.End();
}
}
BasicFragment.glfs
#version 130
// MultiColor Attribute
in vec4 multiColor;
// Output color
out vec4 gl_FragColor;
void main()
{
// Set fragment
gl_FragColor = multiColor;
}
BasicVertex.glvs
#version 130
// Transformation Matrices
uniform mat4 ProjectionMatrix;
uniform mat4 ModelViewMatrix;
// Vertex Position Attribute
in vec3 VertexPos;
// MultiColor Attributes
in vec4 MultiColor;
out vec4 multiColor;
void main()
{
// Process Colors
multiColor = MultiColor;
// Process Vertex
gl_Position = ProjectionMatrix * ModelViewMatrix * vec4(VertexPos.x, VertexPos.y, VertexPos.z, 1);
}
MainWindow.cs
// Extends OpenTK's GameWindow Class
class MainWindow : GameWindow
{
public MainWindow()
: base(1024, 768, new GraphicsMode(32, 0, 0, 4))
{
this.Title = "Trench Wars";
this.WindowBorder = WindowBorder.Fixed;
this.ClientSize = new Size(1024, 768);
// Set VSync On
this.VSync = VSyncMode.Adaptive;
}
protected override void OnRenderFrame(FrameEventArgs e)
{
base.OnRenderFrame(e);
// Clear Screen
GL.ClearColor(Color4.CornflowerBlue);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
// Do State-Specific Rendering
StateEngine.Render();
// Pull a Wicked Bluffing move in Poker
GL.Flush();
// Swap Buffers
this.SwapBuffers();
}
}
最佳答案
您似乎忘记启用深度测试。 glEnable(GL_DEPTH_TEST)
在渲染几何体之前是你的 friend (或者给定你正在使用的语言绑定(bind) GL.Enable(EnableCap.DepthTest);
)。
关于c# - 如何防止 OpenGL 中的三角形渲染在它们前面的三角形之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16781873/
因此,我试图在网站主体中创建导航和页脚,但 particle.js 不断覆盖这些元素。我试过 z-index 但它没有显示出来。 particle.js 不允许我触摸我的导航栏或页脚。会很感激一些帮助
我正在为我的类(class)建立一个美食车网站。我想要有一个盘子的图像,然后一旦它被点击就会有一个不同的食物图像出现在它上面。我想知道可以使用哪种 javascript 或 else/if 语句来实现
我目前正在做一个元素,我有两张人体图像,正面和背面。图像设置为 height: 80vh。我的问题是:我一直在使用 bootstrap 在屏幕较宽时使图像并排流动,在屏幕高时使图像相互叠加,使用 co
有没有办法将“处理...”语言放在 DataTable 对象的顶部而不是垂直中间?如果我有一张长 table ,它会隐藏在页面之外,因为它的默认位置在中间。 $('#example').dataTab
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
问题 我有一个表单,一旦用户填写并提交,我希望在表单上弹出一条消息,显示“现在坐下来放松一下吧……”。理想情况下,我希望此消息上有一个按钮表示“确定”。 到目前为止我有什么? 通过 ajax post
我想在 div 之上制作一个菜单,所以文本基本上位于它之上(参见示例)。我想在同一个 div 中包含菜单的文本,所以 html 是这样的: Portfolio |
我想在 div 之上制作一个菜单,所以文本基本上位于它之上(参见示例)。我想在同一个 div 中包含菜单的文本,所以 html 是这样的: Portfolio |
我想创建这样的布局: 我有 3 个不同的图像:背景、白色方 block 和 V 形符号。 当我希望盒子从一侧移动到另一侧时,如何将它们定位为照片中的位置 当 onClick 被触发时。 我已经尝试过:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
我正在尝试获取鼠标当前悬停的元素并将其返回。根据我迄今为止从研究中收集到的信息,这是执行此操作的代码: document.getElementById('theTable').onmouseo
首先,我想说声抱歉,但我在设计 Android 应用程序时遇到了问题 :D我希望该按钮位于 ListView 下方。实际上该按钮位于 ListView 上方并隐藏了下部区域。我该如何解决? scree
我正在尝试使用 Swiperefreshlayout,它工作得很好,但我需要知道用户何时位于我的 Activity 顶部。我正在阅读这个,我发现了一个名为“setOnScrollListener”的方
我想有两个按钮像页脚一样固定在底部屏幕上,其他 View 不会传递它或在两个按钮上重叠。它只会一直停留在底部。对不起我的英语不好。请帮我。顺便说一句,我不能发布图片,所以它需要 10 个声誉,这就是我
我在所有页面上都有一个由 JavaScript 创建的下拉菜单,有些列最多有 20 个元素。在 Mozilla 浏览器中,此下拉列表显示在所有内容的最上方,但在 Internet Explorer 中
如果我直接在框架上绘画,它显示得很好,但船不会出现在面板顶部... package MoonBlast; import java.awt.BorderLayout; import java.awt.
我已经着手设置我的 JFrame 的背景图像,但现在我的组件(我假设)卡在它后面。我已经尝试阅读有关顶级容器的内容,但我就是无法理解它 T_T。有人有主意吗 ?也许我需要找到另一种方式来设置背景图片?
我有一个 UIView (A),它以纵向模式显示并附加了一个 UIButton。当用户单击按钮时,第二个 UIView (B) 被初始化并显示为 UIView A 顶部的模态视图。 是否可以将第二个
我对这件事束手无策。 我有几个 div。它们都有一个向下的箭头。它应该居中在中间,棕色线上和所有东西的顶部。最后一个 div 也应该有箭头。我尝试了 z-index、绝对和相对定位,但没有任何效果。
我正在尝试使图像出现在父 div 之外,这样图像看起来就好像位于 div 上而不增加父 div 的高度。但是,无论我尝试过什么,图像都会被父 div 截断并且不会显示所有内容。 我有一个 js fid
我是一名优秀的程序员,十分优秀!