Tag: opengl

我的obj-parser有什么问题?

给定以下渲染对象(具有完全白色纹理的龙)和具有基本纹理的停顿。 可能是什么错误? 我的指数错了吗? 有些顶点或面是错的吗? : 在我的obj-renderer课程中可能出现什么问题? 我遵循了一个教程,不幸的是我的模型看起来不像所需的模型。 龙应该是完全白色的,没有任何黑线,并且失速纹理看起来不对(白线不应该在那里)。 这是源代码(带有“v”,“vt”,“vn”,“f”的基本.obj渲染): try { while ((line = reader.readLine()) != null && !line.startsWith(“f “)) { String[] currentLine = line.split(” “); if (line.startsWith(“v “)) { Vector3f vertex = new Vector3f(Float.parseFloat(currentLine[1]), Float.parseFloat(currentLine[2]), Float.parseFloat(currentLine[3])); vertices.add(vertex); } else if (line.startsWith(“vt “)) { Vector2f texture = new Vector2f(Float.parseFloat(currentLine[1]), Float.parseFloat(currentLine[2])); textures.add(texture); } else if (line.startsWith(“vn […]

在OpenGL中获取X,Y和Z轴上的弧度相机旋转?

我正在尝试在OpenGL中的各个轴上获取相机旋转(但具体使用Java,LWJGL和jME)。 相机对象允许我将方向作为Vector3f,但这似乎不能用于获得分量旋转; 每个轴显示与另一个轴相关联。 我发现带有偏移的角度分量toAngleAxis是一个快速的黑客,但在大多数情况下无法正常工作。 不幸的是,我不太擅长数学,否则我可能已经解决了这个问题:)再次,我只需要X,Y和Z轴分量和弧度,从0弧度到2 PI弧度。 有人可以帮忙吗? 克里斯,先生干杯谢谢

OpenGL透视扭曲场景比沿z轴预期的要多得多

我在LWJGL工作,并且一直在努力编写一个程序,允许简单的3D观看场景。 我遇到的主要问题是每当我应用透视时,我的场景在z轴上非常非常远。 中间的正方形是用正投影绘制的立方体(这里的立方体意味着“所有边都相等”)。 从左下角到中心的形状也是一个立方体,但是用透视投影绘制! 显然,这看起来不像一个立方体。 这是我的代码(它有点像墙,所以我把它分解了): public class OpenGL { //width and height of the screen, plus the depth of the 3d space public static final int WIDTH = 800, HEIGHT = 600, DEPTH = 1000; //called once at startup private static void initGl() { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glViewport(0,0,WIDTH,HEIGHT); GL11.glDepthFunc(GL11.GL_LESS); GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL); GL11.glClearColor(0,0,0,0); […]

将C ++ OpenGl转换为Java(LWJGL),glBufferData();

我一直在搞乱LWJGL尝试创建一个.obj解析器,它将从blender导出的文件转换为OpenGL渲染代码。 我遵循了类似于我正在做的教程,但它是用c ++编写的,我很难理解。 我已经设法让一切都与解析器一起工作(我认为),但是当实际渲染到模型的时候,我很难创建一个与c ++代码相当的java。 本教程使用以下代码行: glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW); 然后(显然)它绘制数组。 我很确定我需要将Vecotor3f从我的列表(顶点)转换为FloatBuffer,而我不需要第二个参数(因为java会处理大小)。 但是,我不知道如何做到这一点,我仍然找到了解决java的方法,并且之前从未使用过这个类。

在LibGDX中实现梯形精灵

我正在尝试为一个简单的2D游戏创建一个程序动画引擎,让我可以用少量图像创建漂亮的动画(类似于这种方法,但对于2D: http : //www.gdcvault.com / play / 1020583 / Animation-Bootcamp-An-Indie-Approach ) 目前我有关键帧来保存不同动画对象的数据,关键帧是浮点数组,代表以下内容: translateX,translateY,scaleX,scaleY,rotation(degrees) 我想将skewX,skewY,taperTop和taperBottom添加到此列表中,但我无法正确呈现它们。 这是我尝试在精灵顶部实现锥度以使其呈梯形形状: float[] vert = sprite.getVertices(); vert[5] += 20; // top-left vertex x co-ordinate vert[10] -= 20; // top-right vertex x co-ordinate batch.draw(texture, vert, 0, vert.length); 不幸的是,这会产生一些奇怪的纹理变形。 我有一点谷歌,看看StackOverflow并找到了这个,这似乎是我遇到的问题: http://www.xyzw.us/~cass/qcoord/ 但是我不明白它背后的数学(什么是s,t,r和q?)。 有人可以解释一下吗?

为什么相机移动时纹理会闪烁?

我实现了一个与播放器一起移动的顶视摄像头,使用camera.position.lerp只有一点慢。 问题是纹理闪烁(闪烁),因为我缩放了我的纹理。 如果我使用正常尺寸的纹理,闪烁就会停止。 有没有人有任何想法如何移动相机与缩放(或纹理缩放 – 相同的事情)而不会让纹理闪烁(或闪烁)? 我使用线性过滤并从地图集加载每个资产。 我在多个论坛上看到了这个问题,但没有答案。 我想加载更高分辨率的纹理并在代码中调整它们的大小,这就是我问这个问题的原因。

使用OpenGL将文本添加到屏幕

目前,我正在开发一个OpenGL项目,这是我所做的屏幕截图 问题是,我想在罗盘上添加文本(度),并希望用纯OpenGl方法来实现。 我找到了TextRenderer类,但无法下载并使用它。 如何在我的Java项目中使用TextRenderer类? 如果除了TextRenderer之外还有其他任何添加文本的方式,那么我很乐意听到它。 我的第二个也是最重要的问题是将swing / awt方法与OpenGL合并并使用多个对象。 我只使用一个GL2对象编写程序并且工作得很好,在同一帧上使用多个openGL对象是否明智? 此外,使用swing方法和openGL方法是一个好主意?

使用帧缓冲区将深度缓冲区渲染为纹理

我正在使用JOGL,但这个问题一般适用于OpenGL。 似乎存在类似的问题,但它们要么针对GLSL代码,要么与复制帧缓冲区的内容有关,要么是一般建议 – 使用帧缓冲对象而不是glCopyTexSubImage2D 。 题 我正在做一些阴影贴图。 如何使用帧缓冲对象将深度通道直接渲染到纹理? 你能发一个初始化纹理和帧缓冲对象的代码块,以及在渲染场景之前初始化所有内容的代码吗? 目前,我使用glCopyTexSubImage2D 。 我像这样初始化纹理: glGenTextures(1, &textureNo) glBindTexture(GL_TEXTURE_2D, textureNo) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL) glTexParameterf(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY) glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 2048, 2048, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, null) 然后我像这样渲染: glBindTexture(GL_TEXTURE_2D, textureNo) glClear(GL_DEPTH_BUFFER_BIT) drawScene() glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, […]

如何在OpenGL中绘制镜像镜像?

从我的理解是,要在OpenGL中镜像,你基本上绘制场景,然后你翻转所有东西并再次绘制它,除了只通过镜子可见,从而在镜子中创建一个完美的翻转图像。 但我看到的问题是,当这样做时,唯一可以看到其他镜像的镜像是在之前的镜像之后渲染的镜像。 因此,如果我渲染镜像1然后镜像2,则镜像1看不到镜像2,但镜像2可以看到镜像1.如果没有这种情况,我如何有效地镜像镜像?

如何在Java中以高性能显示许多SVG

我想要的是 我的目标是能够在Java中的单个绘图区域上显示大量SVG图像,每个图像都有自己的平移/旋转/缩放值。 我正在寻找最简单的解决方案,可选择甚至使用OpenGL来加快速度。 我试过的 我最初的天真的方法是使用SVGSalamander直接在JPanel上绘制,但性能是可悲的。 我四处寻找,并了解到我应该做一些事情,比如手动将每个SVG转换为用createCompatibleImage创建的BufferedImage,然后进行我想要的转换,然后使用双缓冲绘制它。 我在这里遇到了一些麻烦,在我继续之前,我试图寻找框架来简化事情。 我看到了什么 我对可用的选项感到有些不知所措,这就是为什么我转向SO寻求帮助的原因。 我看过: 开罗 (可能是格利茨 ?) Libart – 不确定这是否真的支持SVG 通风柜 光滑 – 看起来很有希望,但有点矫枉过正 但是无法决定什么对我来说最适合开始工作,我希望有人在这里做任何类似事情的经验。