Tag: OpenGL

OpenGL纹理毛刺与面孔

我正在使用LWJGL来创建一个简单的体素thingy作为一些练习,作为一个适度的简单项目来熟悉Kotlin 。 所以我已经得到了体素渲染下来,除了渲染每个脸上不同纹理的体素。 它看起来不错,直到我开始移动…然后: 如果有人需要整个回购,就在这里 至于相关的类,我不太确定什么是相关的,但这里是生成glVertex3f和glTexture2f的东西: public class Shape { class object { public fun CreateCube(x: Float, y: Float, z: Float, colour: ColourRGBA, tex: MutableList, size: Float) { val sheet: Spritesheet = Main.Instance!!.blocksprites var textures: MutableList = arrayListOf() if (tex.size == 1) { for (i in 0 .. 5) textures.add(tex[0]) } else textures.addAll(tex) // bottom […]

LIBGDX 3D:在着色器上关闭纹理:OpenGL

对不起,如果问题是有点利基。 几年前我写了一些代码,它将许多网格渲染为一个大网格来表现。 我现在想做的只是渲染没有纹理的网格,所以只有一个颜色 boxModel = modelBuilder.createBox(10f, 10f, 10f, Material(ColorAttribute.createDiffuse(Color.WHITE), ColorAttribute.createSpecular(Color.RED), FloatAttribute.createShininess(15f)), (VertexAttributes.Usage.Position or VertexAttributes.Usage.Normal or VertexAttributes.Usage.TextureCoordinates).toLong()) // or VertexAttributes.Usage.TextureCoordinates for (x in 1..10) { for (y in 1..10) { modelInstance = ModelInstance(boxModel, x * 15f, 0.0f, y * 15f) chunks2[0].addMesh(modelInstance.model.meshes, modelInstance.transform, btBoxShape(Vector3(10f, 10f, 10f))) } } chunks2[0].mergeBaby() 所以我建立了巨大的网格,然后渲染它 shaderProgram.begin() texture.bind() shaderProgram.setUniformMatrix("u_projTrans", camera.combined) shaderProgram.setAttributef("a_color", 1f, 1f, […]

Assimp教程LWJGL

我在网上浏览了LWJGL的Assimp教程的教程。 我找到的最好的是https://learnopengl.com/#!Model-Loading/Model ,但它有不同的绑定比LWJGL。 编辑:我正在使用LWJGL提供的绑定。 我遇到的主要问题是我无法弄清楚如何从材质中加载纹理。

Lwjgl 3,如何获取当前线程中的OpenGL上下文?

我正在使用LWJGL 3中的OpenGL,我得到以下错误; Exception in thread "main" java.lang.IllegalStateException: There is no OpenGL context current in the current thread. at org.lwjgl.opengl.GL.getCapabilities(GL.java:157) at org.lwjgl.opengl.GL11.getInstance(GL11.java:1390) at org.lwjgl.opengl.GL11.glClearColor(GL11.java:1842) at com.base.engine.RenderUtil.initGraphics(RenderUtil.java:13) at com.base.engine.Main.<init>(Main.java:14) at com.base.engine.Main.main(Main.java:24) 这是RenderUtil类,其中initGraphics是从我的主类的构造函数中调用的。 我也试图在用GLFW创建窗口之后调用initGraphics,它也产生了类似的错误信息。 package com.base.engine; import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.GL30.*; public class RenderUtil { public static void clearScreen() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } public static void […]

为什么绑定OpenGL缓冲区对象?

在OpenGL中,一个通用的过程是绑定一个指定的缓冲区对象(或顶点数组对象,framebuffer,…),在当前绑定的对象上调用一些操作,然后绑定某种“默认”对象: glBindBufferObject(GL_ARRAY_BUFFER, bufferObjectName) glBufferData(GL_ARRAY_BUFFER, data, GL_STATIC_DRAW) glBindBufferObject(GL_ARRAY_BUFFER, 0) (Kotlin的LWJGL) 我刚刚发现有很多功能的“命名”版本。 上面的例子会变成类似的东西 glNamedBufferData(bufferObjectName, data, GL_STATIC_DRAW) 这在面向对象的上下文中更合适。 那么为什么要用第一个例子呢? 我遇到的每一个教程都使用了第一种方法,那么在“命名”方法中是否存在一些性能损失或类似的缺点?

在kotlin的glBufferData()上使用GL_INVALID_OPERATION

我目前正在通过LWJGL(用于学习Kotlin)用OpenGL在Kotlin上创建一个游戏。 我创建了一个代表VBO的类,如下所示: package de.pascal_riesinger.Testing.gfx import de.pascal_riesinger.Testing.Log import de.pascal_riesinger.Testing.LogLevel import de.pascal_riesinger.Testing.logGLError import org.lwjgl.opengl.GL15 import java.nio.FloatBuffer class VBO() { private var id: Int = 0 init { Log(LogLevel.DEBUG, "VBO", "Allocating new VBO") id = GL15.glGenBuffers() Log(LogLevel.DEBUG, "VBO", "Allocated VBO with id $id") } fun bufferData(data: FloatBuffer, usage: Int) { bind() GL15.glBufferData(id, data, usage) unbind() } fun bind() […]