标签: opengl

Matrix 中的同时旋转

有人可以(再次)帮助我吗?我有一个这样的矩阵:

\n\n
1.0  0.0  0.0  2.5\n0.0  1.0  0.0  0.0\n0.0  0.0  1.0  0.0\n0.0  0.0  0.0  1.0\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何同时在X轴上旋转20\xc2\xb0,在Y轴上旋转-128\xc2\xb0,在Z轴上旋转72.1\xc2\xb0?

\n\n

非常感谢

\n

c opengl

-1
推荐指数
1
解决办法
652
查看次数

OpenGL GLX_EXT_swap_control 存在但无法链接函数

我无法在代码中使用 glXSwapBufferEXT,我得到未声明的标识符。但例如 glXQueryDrawable 可以工作。

在我的 cmake 文件中,我链接了 Opengl 库,并将它们包含在编译器中。

在我的标题中,我包括 GL/glx.h 和 GL/glxext.h。

运行 glxinfo 显示 GLX_EXT_swap_control 存在,并且在我的应用程序中测试扩展也显示它在运行时存在。

我究竟做错了什么?我错过了什么吗?

我为 Quadro K5000 安装了 NVIDIA 346.47 驱动程序

Linux gcc4.9/clang3.5

c++ opengl nvidia cmake

-1
推荐指数
1
解决办法
2048
查看次数

线程“main” org.lwjgl.opengl.OpenGLException 中的异常:操作无效 (1282) - LWJGL

我尝试使用 lwjgl 来创建游戏。我做错了什么,并在下面出错。我该如何解决?它实际上意味着什么?

Exception in thread "main" org.lwjgl.opengl.OpenGLException: Invalid operation (1282)
at org.lwjgl.opengl.Util.checkGLError(Util.java:59)
at org.lwjgl.opengl.GL20.glUniform1f(GL20.java:338)
at com.base.engine.Shader.setUniformf(Shader.java:119)
at com.base.engine.Game.update(Game.java:63)
at com.base.engine.MainComponent.run(MainComponent.java:85)
at com.base.engine.MainComponent.start(MainComponent.java:38)
at com.base.engine.MainComponent.main(MainComponent.java:131)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

java opengl lwjgl

-1
推荐指数
1
解决办法
1458
查看次数

带有“没有为构造构造函数提供足够数据”的平凡着色器

我有一个相当简单的顶点着色器:

#version 330 core

layout (location = 0) in vec2 position;
layout (location = 1) in vec2 uvCoord;

uniform mat4 view;
uniform mat4 projection;

out vec2 _uvCoord;

void main()
{
  gl_Position = projection * view * vec4(position, 1.0);
  _uvCoord = uvCoord;
}
Run Code Online (Sandbox Code Playgroud)

这是给出错误:

ERROR: 0:13: error(#174) Not enough data provided for construction constructor
ERROR: error(#273) 1 compilation errors.  No code generated
Run Code Online (Sandbox Code Playgroud)

我曾尝试在谷歌上搜索导致此类错误的原因,但无济于事。失败了,我仔细查看了着色器代码,但据我所知,它没有问题。

是什么导致了这种错误,我该如何修复这个着色器?

opengl glsl

-1
推荐指数
1
解决办法
3198
查看次数

为什么我的纹理映射与我的片段着色器在纹理坐标跳跃时生成线?

我在将等距柱状图全景图像映射到简单平面上时遇到了很多麻烦。到目前为止,我的映射是正确的,所以一切都准确地显示在它应该的位置。但我的问题是,在我的纹理坐标从 1 跳到 0 的地方有一条线。但那条线不仅仅是一些线。它的像素比普通像素大一倍。我将它直接渲染到我的屏幕上,中间没有帧缓冲区。我试图启用多重采样,但它根本不影响那条线。我也试图通过将它隐藏在我的相机后面来摆脱那条线,但后来我意识到当我抬头时,无论我在哪里转动它,总会有这条线。在我的代码中,当我使用例如“if”或“atan”进行纹理坐标跳转时,总是显示这一行。

问题的图像

java opengl textures glsl fragment-shader

-1
推荐指数
1
解决办法
203
查看次数

C++ OpenGL内存泄漏

首先,我是c ++的初学者.我正在编写自己的游戏引擎.代码如下.

Sprite.cpp

#include "Sprite.h"


Sprite::Sprite(GLfloat x, GLfloat y, GLfloat width, GLfloat height, Shader& shader, char *texturePath)
{
    init(x, y, width, height, shader, texturePath, STBI_rgb_alpha);
}

Sprite::Sprite(GLfloat x, GLfloat y, GLfloat width, GLfloat height, Shader& shader, char *texturePath, int reg_comp)
{
    init(x, y, width, height, shader, texturePath, reg_comp);
}
void Sprite::init(GLfloat x, GLfloat y, GLfloat width, GLfloat height, Shader& shader, char *texturePath, int reg_comp)
{
    this->shader = &shader;
    GLfloat vertices[] = {
        width/2+x,  height/2+y, 0.0f,  /* Top Right */                  1.0f, …
Run Code Online (Sandbox Code Playgroud)

c++ memory opengl memory-leaks memory-management

-1
推荐指数
1
解决办法
1010
查看次数

LWJGL 3 不渲染任何东西,同时成功创建显示

问题

我在使用 LWJGL 3 渲染任何东西时遇到了麻烦。它不会渲染任何东西,同时创建 GLFW 显示并成功清除颜色。

工具

  • Eclipse 霓虹灯(Java IDE)
  • LWJGL 3.1.1 build 16 带有 GLFW、JAWT 和 OPENGL 绑定,原生。

编码

package init;

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.nio.IntBuffer;

import org.lwjgl.glfw.GLFWErrorCallback;
import org.lwjgl.glfw.GLFWVidMode;
import org.lwjgl.opengl.GL;
import org.lwjgl.system.MemoryStack;

import exception.ExceptionHandler;
import util.Time;

import static org.lwjgl.glfw.Callbacks.*;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryStack.*;

public class DisplayInstance {
    
    public String title = "The SuperMatrix";
    public GraphicsDevice gd;
    public Game game;
    public Config conf;
    private long display;
    
    private GLFWErrorCallback glfwerrorcallback;
    
    public DisplayInstance(Game …
Run Code Online (Sandbox Code Playgroud)

java opengl 3d lwjgl 3d-engine

-1
推荐指数
1
解决办法
964
查看次数

如何在 OpenGL C++ 中绘制多个三角形?

我能够使用顶点数组绘制单个对象。但是,在绘制多个对象时,这让我很困难。

我有一组这样的数据,三个顶点渲染一个三角形:

-0.0570917f,0.490469f,-0.142433f
-0.0581126f,0.5f,-0.160615f
-0.0651903f,0.490827f,-0.147409f
-0.0501295f,0.499886f,-0.158146f
-0.0491703f,0.49039f,-0.140236f
-0.0422027f,0.499864f,-0.157942f
-0.041255f,0.49031f,-0.138206f
-0.0333885f,0.490314f,-0.137995f
-0.0967512f,0.48302f,-0.150394f
...
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下代码渲染多个三角形:

// this array contains arrays with one vertex (three elements)
vector<vector<GLfloat>> pointVertex;

// Render OpenGL here
for (int i = 0; i < pointVertex.size(); i++) {
    vector<GLfloat> temp = pointVertex[i];
    GLfloat *pointVertexArrayPoint = temp.data();
    glEnable(GL_POINT_SMOOTH);
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, pointVertexArrayPoint);
    glDrawArrays(GL_LINES, 0, temp.size());
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisable(GL_POINT_SMOOTH);
}
Run Code Online (Sandbox Code Playgroud)

现在,我得到了结果,但这一切都始于同一点。我希望它呈现不同的多个单独的三角形。我怎样才能改变它?

c++ opengl

-1
推荐指数
1
解决办法
5281
查看次数

OpenGL indicesBuffer值得使用吗?

我目前正在学习用于3D渲染的OpenGL,我无法完全了解有关着色器和VBO的一些事情,我得到所有VBO共享一个索引,因此您需要复制一些数据

但是当你创建更多的VBO时,几乎没有具有共享相同位置法线和纹理坐标的顶点的面,所以索引至少从我的观点来看是相当无用的,它基本上只是一个连续数字的数组.

是否有一个方面的指数我看不到?

opengl shader

-1
推荐指数
1
解决办法
131
查看次数

OpenGL 纹理状态使用警告:

OpenGL 向我发送垃圾邮件错误Severity: GL_DEBUG_SEVERITY_LOW, Source: GL_DEBUG_SOURCE_API, Type: GL_DEBUG_TYPE_OTHER Texture state usage warning: The texture object (1) bound to texture image unit 0 does not have a defined base level and cannot be used for texture mapping. 或仅在glDrawElements. 原因是为我的游戏引擎设置纹理。

我试图设置glPixelStorei(GL_UNPACK_ALIGNMENT, 1);. 其他解决方案是胡说八道或理论上的。其他解决方案是指与我的问题类似的问题/答案。

在从中型游戏引擎中煞费苦心地剥离 opengl 代码后,这里是代码:

#include <iostream>
#include <GLFW/glfw3.h>
#include <glad/glad.h>
#include <glm/glm.hpp>
#include <string>
#include <stb_image.h>
#include <cstring>

#include <stdint.h>
#include <string>

typedef uint64_t uint64;
typedef uint32_t uint32;
typedef uint16_t uint16;
typedef uint8_t uint8;

typedef int64_t …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

-1
推荐指数
1
解决办法
1122
查看次数