标签: opengl

OpenGL:响应键盘问题

我的程序从键盘上取回一把钥匙.我希望按照键盘上的箭头向左/向右/向上移动形状.

这是代码的相关部分:

    case GLUT_KEY_LEFT :
        {
            horizon--;
            glutPostRedisplay();    
            break;

        }
Run Code Online (Sandbox Code Playgroud)

但是GLUT_KEY_LEFT没有响应,但是如果我将其更改为'B',则它会起作用.我不知道为什么它不起作用.GLUT_KEY_LEFT的值在openGL头文件中定义.它们是错的吗?!

c opengl glut

0
推荐指数
1
解决办法
1156
查看次数

我可以将一个纹理单元用于5种不同的2D纹理

我知道程序中可以有GL_MAX_TEXTURE_IMAGE_UNITS纹理单元OpenGL.但我们假设我只使用一个.假设我有5个2D纹理.我可以将它们"映射"到单个纹理单元(TEXTURE0)以渲染所有这些纹理单元.我的意思是我会这样做:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//specify tex data and tex params for tex1

glBindTexture(GL_TEXTURE_2D, tex2);
//specify tex data and tex params for tex1
Run Code Online (Sandbox Code Playgroud)

..等等所有5个纹理

渲染循环:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//draw

glBindTexture(GL_TEXTURE_2D, tex2);
//draw
Run Code Online (Sandbox Code Playgroud)

..等等所有5个纹理

在片段着色器中,我只使用1个sampler2d变量,该变量初始化为零(对于纹理单元0)

如果这不能正常工作,那么我应该使用5个不同的纹理单位(TEXTURE0, TEXTURE0+1, ....TEXTURE0+5)并将每个纹理"映射"到不同的纹理单元.

最重要的问题:如果我的第一种方法是正确的,那么有多少2D纹理(我现在只讨论2D纹理)可以"映射"到纹理单元吗?

opengl textures

0
推荐指数
1
解决办法
736
查看次数

能够多次附加/链接着色器有什么意义?

有些东西我对OpenGL并不完全了解:根据我正在阅读的所有内容,通过将着色器编译得足够长以将它们附加到程序中来获得最佳性能,然后建议您将着色器本身删除为可用内存,只需跟踪程序,直到删除它为止.

所以我的问题是:如果上述情况属实,那么在创建程序后能够附加着色器并重新链接程序的目的是什么?在场景创建期间创建第二个着色器程序并在它们之间交换而不是分离/附加和重新链接程序是不是更有效?

opengl performance shader

0
推荐指数
1
解决办法
140
查看次数

0,800,600,0与0,800,0,600 OpenGL

在一个800 x 600的窗口中,似乎最常见的设置OpenGL矩阵的方法是glOrtho(0,800,0,600,1,-1),而我总是使用glOrtho(0,800,600,0,1 ,-1).是否有理由为什么有些人更喜欢我在第二种方式中展示的第一种方式?

c++ opengl matrix orthographic

0
推荐指数
1
解决办法
94
查看次数

OpenGL红皮书,OpenGL编程指南 - 版本2或版本2.1 - 寻找有关购买的建议

从Uni图书馆借了一本书.这不是我所希望的......

嗨,我是学生,整个夏天我借用了OpenGL编程指南,版本4.3,这是我的大学似乎在主库中唯一的版本.

我已经对使用OpenGL与SFML,SDL和过剩有所了解.我借了这本书来帮助我扩展我的知识.

不幸的是,我发现4.3这本书非常重,难以理解.我确信我读过一本类似的书(旧版本,曾经被称为"红皮书")并且发现它更容易理解.

我能够借用2.1版本书,我很确定这是我读过的那本书.到目前为止,我发现它容易遵循.它肯定更适合非专家和经验较少的人.

请不要关闭这个问题......

这可能是一种接收不良的问题,并被投票结束,但请不要这样做 - 我想回答我的问题.我认为这是一个编程问题,对我这样的人有帮助.正如我稍后解释的那样,我希望购买第2版或第2.1版的书,并希望得到一些建议.

TLDR?问题从这里开始:

基本上我想知道OpenGL Version 2和Version 2.1之间的主要区别.据我所知,有一本关于版本1.0或类似的书,然后是2.0,2.1,然后是3或3.5或者其他什么.为什么有一本全新的版本增量为0.1的书:从版本2.0到2.1.我假设在2.1版本中添加了一些重大更改或添加了扩展和功能?

问的原因是我非常喜欢这本书(2.1版),我想我应该买它!(疯狂,没有?)无论如何,我想知道版本2.1中有什么额外的东西,或者已经改变了什么,所以我可以决定是否花费额外的东西是值得的.

opengl

0
推荐指数
1
解决办法
1129
查看次数

delphi和opengl:光与立方体一起旋转

问题是由翻译写的,所以我不知道它是正确的.我开始学习Opengl并遇到了以下问题:当我旋转立方体时,光线也会旋转.我试图在每一帧中改变光的坐标,但它没有帮助.告诉我:出了什么问题.如果没有麻烦,有可能会导致修订版本.

码:

unit MainUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,     Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,dglOpenGL,dglut;

type
  TFMainForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private

  procedure SetupGL;
  procedure uzglLightEnable;
  procedure IdleHandler(Sender : TObject; var Done : Boolean);

  public

  procedure Render;

  end;

var
  FMainForm: TFMainForm;
  dc:hdc;
  hrc:hglrc;
  XRot,YRot,ZRot:Single;

  LightPos:TGLArrayf4;
  BlueArray:TGLArrayf4;
  GreenArray:TGLArrayf4;
  myTex: glUint;

  FrontNormal: TGLvectorf3=(0,0,1);
  BackNormal: TGLvectorf3 =(0,0,-1);
  LeftNormal: TGLvectorf3 =(-1,0,0);
  RightNormal: TGLvectorf3=(1,0,0);
  UpNormal: TGLvectorf3   =(0,1,0);
  DownNormal: TGLvectorf3 =(0,-1,0);

  FrontDownLeft :TGLvectorf3 …
Run Code Online (Sandbox Code Playgroud)

delphi opengl lighting rotation

0
推荐指数
1
解决办法
845
查看次数

我在哪里可以编译opengl源来生成库?

我在哪里可以找到一个可以在Visual Studio上执行的程序来编译openGL源并生成像opengl32.lib,glut32.lib等库.实际上我有QT版本的问题.我想使用QT执行opengl但没有QT Opengl API.

这是错误消息:

lnk2026 module unsafe for safeseh image opengl32.lib
Run Code Online (Sandbox Code Playgroud)

我真的迷路了.在此先感谢您的帮助.

opengl qt

0
推荐指数
1
解决办法
132
查看次数

我们在openGL中使用什么矩阵?

我是OpenGL的新手,想知道我们使用矩阵是什么,如果有人能用抽象的直观方式解释我,因为在阅读参考书或任何教程时,所有这些都将矩阵作为已知的机制.我已经学习了数学矩阵,但由于英语不是我的母语,因此很难弄清楚某些东西是什么意思.

我在www.learnopengl.com找到了一个很好的例子,它说:

The model matrix. This matrix is used to place a model somewhere in the “world”. For example, if you have a model of a car and you want it located 1000 meters to the east, you will use the model matrix to do this.
The view matrix. This matrix represents the camera. If we want to view our car which is 1000 meters to the east, we’ll have to move ourselves 1000 meters to the east as well …
Run Code Online (Sandbox Code Playgroud)

opengl matrix

0
推荐指数
1
解决办法
480
查看次数

在Ubuntu终端中编译时OpenGL引用的问题

我正在编译c ++文件和标题的目录.我认为我正确安装了openGL,Glut和Glew,但在运行时我一直在引用错误.

这是我正在做的以及编译器发回给我的错误:

user@Linux-machine:~/Documents/HW$ make
g++ -g framework.o poly_line.o shader_program.o circle.o controller.o main.o scene.o view.o -lGLEW -lglut -lGLU -o HW
framework.cpp:84: error: undefined reference to 'glGetError'
check_gl.h:30: error: undefined reference to 'glGetError'
check_gl.h:43: error: undefined reference to 'glGetError'
poly_line.cpp:23: error: undefined reference to 'glGenBuffers'
poly_line.cpp:28: error: undefined reference to 'glBindBuffer'
poly_line.cpp:29: error: undefined reference to 'glBufferData'
poly_line.cpp:54: error: undefined reference to 'glEnable'
poly_line.cpp:55: error: undefined reference to 'glEnable'
poly_line.cpp:56: error: undefined reference to 'glBlendFunc'
poly_line.cpp:57: error: undefined reference to 'glHint' …
Run Code Online (Sandbox Code Playgroud)

c++ opengl terminal glut glew

0
推荐指数
1
解决办法
6054
查看次数

OpenGL如何确定要编码的最新版本

通过此链接获取在DirectX中我可以简单地添加以下行:

#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
...
Run Code Online (Sandbox Code Playgroud)

指定我想要编写的'最新'DX版本.如何在OpenGL中实现这一点,以便我可以确保在编码时使用最新的GL库.我#define在代码中使用的某些东西或我的GL函数是否会决定OpenGL的版本?

在c ++或其他软件中是否有一种方法可以告诉我的.exe程序使用的是什么版本的openGL?

opengl directx winapi include

0
推荐指数
1
解决办法
106
查看次数

标签 统计

opengl ×10

c++ ×2

glut ×2

matrix ×2

c ×1

delphi ×1

directx ×1

glew ×1

include ×1

lighting ×1

orthographic ×1

performance ×1

qt ×1

rotation ×1

shader ×1

terminal ×1

textures ×1

winapi ×1