标签: opengl

无法在OpenGL中使用相机移动Foward

我正在尝试使用pyOpenGL,但我无法让相机正常工作.

def Draw():

     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
     glMatrixMode(GL_MODELVIEW)
     glLoadIdentity()

     glRotatef(roty,1,0,0)
     glRotatef(rotx,0,1,0)
     glTranslate(0,0,eyez)

     glPushMatrix()

     glTranslate(0,0,-80)

     glBegin(GL_QUADS)
     glColor(0,1,0)
     glVertex3f(-50,-5,10)
     glVertex3f(-50,50,10)
     glVertex3f(50,50,10)
     glVertex3f(50,-5,10)

     glColor(1,0,0)
     glVertex3f(-50,-5,10)
     glVertex3f(-50,50,10)
     glVertex3f(-50,50,70)
     glVertex3f(-50,-5,70)
     glEnd()

     glPopMatrix()

     glutSwapBuffers()
Run Code Online (Sandbox Code Playgroud)

这些旋转效果很好,但我无法向相机朝向的方向前进.当我修改代码以便能够以这种方式向前移动时,场景将无法正确旋转.如果我回到足够远的地方,将会发生一个圆圈旋转的情况.

python opengl camera

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

glTexImage2d什么都不做

这个问题困扰着我.我正在测试一些Haskell绑定到OpenGL,我创建了一个顶点着色器,一个片段着色器,编译程序,并在转换顶点后在屏幕上绘制一个纹理矩形......除了屏幕是空白的.

当我渲染矩形平白而不是在片段着色器中使用采样器时,它工作正常.当我进入gdebugger并使用选项将所有纹理替换为存根纹理时,它也可以正常工作.

当我在gdebugger中查看分配的纹理时,没有纹理对象,只有默认的2d纹理.当我在glTexImage2d上设置断点时,我看到它被调用了,但是当我用gdebugger查看它时,内存中没有纹理对象出现.

这是怎么回事?我忘了设置一些环境变量吗?我很沮丧.踢球者之前我遇到过这个问题,然后我设法解决了这个问题,但我忘记了问题所在.我讨厌自己> _>

opengl textures haskell

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

opengl纹理无法正确渲染

我遇到的问题是我不能让我的纹理以正确的比例渲染,并且由于某种原因,纹理也在重复自身,中间有一个空格.

这是我正在使用的纹理(我正在用这种纹理填充屏幕):

质地

渲染时它看起来像这样(红色轮廓是整个屏幕,纹理使用1像素边框渲染):

截图

这是代码:

package game;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Timer;
import org.lwjgl.util.glu.GLU;
import org.newdawn.slick.opengl.TextureLoader;

public class WarZone {

private boolean done = false;
private String windowTitle = "War Zone";
private DisplayMode displayMode;
private Timer timer;
private float dt;

public static void main(String[] args) {
    new WarZone().run(false);
}

public void run(boolean fullscreen) {
    try {
        init();
        switchToOrtho();
        while (!done) {
            timer.tick();
            update();
            render();
            Display.update();
        }
        cleanup();
    } catch (Exception …
Run Code Online (Sandbox Code Playgroud)

java opengl graphics textures

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

VS2010中的OpenGl

我正在尝试开始学习opengl并且我使用VS2010终极sp1,但是当我添加opengl标头时,我收到的错误表明我没有创建的文件中存在错误.

#include "stdafx.h"
#include <Windows.h>
#include <gl\GL.h>
#include <gl\GLU.h>

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误(总共195个)这是我认为最常见的一个:
错误1错误C2008:'$':宏定义中的意外C:\ Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h 142

c++ opengl visual-studio-2010

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

削减QGLWidget?

是否有可能削减QGLWidget?我的意思是我想削减它,以便我可以访问下面的gui.这听起来很奇怪,但将我的QGLWidget分成两部分对我来说将是很多工作.我希望你明白我的意思.谢谢

opengl macos qt qglwidget

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

如何删除一次制作的所有纹理?

如何删除我制作的所有纹理?假设我加载了一些纹理:

GLuint tx_wall,tx_floor,tx_tiles;
tx_wall=LoadTexture("tex_wall.raw",512,512),
tx_floor=LoadTexture("tex_floor.raw",512,512),
tx_tiles=LoadTexture("tex_tiles.raw",512,512);
Run Code Online (Sandbox Code Playgroud)

然后使用它们:

glBindTexture(GL_TEXTURE_2D,tx_wall);
  glBegin(GL_QUADS);
    glTexCoord2f(0, 0); glVertex3f(0,   0,  0);
    glTexCoord2f(1, 0); glVertex3f(0,  50,  0);
    glTexCoord2f(1, 1); glVertex3f(0,   0, 14);
    glTexCoord2f(0, 1); glVertex3f(0,  50, 14);
  glEnd();
glBindTexture(GL_TEXTURE_2D,tx_floor);
  glBegin(GL_QUADS);
    glTexCoord2f(0, 0); glVertex3f(0,   0,  0);
    glTexCoord2f(1, 0); glVertex3f(50,  50, 0);
    glTexCoord2f(1, 1); glVertex3f(50,  50, 0);
    glTexCoord2f(0, 1); glVertex3f(0,   0,  0);
  glEnd();
(and so on)
Run Code Online (Sandbox Code Playgroud)

当游戏结束时,删除它们:

glDeleteTextures(1,&tx_wall);
glDeleteTextures(1,&tx_floor);
glDeleteTextures(1,&tx_tiles);
Run Code Online (Sandbox Code Playgroud)

一切正常,但如果我有10或20个纹理,我将如何终止它们而不取名字?

c++ opengl

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

如何优化此功能?(几乎使用所有处理能力)

我正在编写一个小游戏来教我自己的OpenGL渲染,因为它是我尚未解决的问题之一.我之前使用过SDL,同样的功能,虽然仍然表现不佳,但并没有像现在那样超越顶级.

基本上,我的游戏还没有太多进展,只是一些基本的动作和背景绘图.当我切换到OpenGL,它看起来好像是这样太快了.我的每秒帧数超过2000,此功能耗尽了大部分处理能力.

有趣的是,它的SDL版本中的程序使用了100%的CPU但运行顺畅,而OpenGL版本只使用了大约40% - 60%的CPU,但似乎对我的显卡征税,使我的整个桌面变得无法响应.坏.

它不是一个太复杂的功能,它根据玩家的X和Y坐标呈现1024x1024背景图块,以给出运动的印象,同时玩家图形本身保持锁定在中心.因为它是用于更大屏幕的小瓷砖,所以我必须多次渲染它以将瓷砖拼接在一起以获得完整的背景.下面代码中的两个for循环迭代12次,合并,所以我可以看到为什么当每秒调用2000次时这是无效的.

所以为了达到目的,这是邪恶的行为者:

void render_background(game_t *game)
{
    int bgw;
    int bgh;

    int x, y;

    glBindTexture(GL_TEXTURE_2D, game->art_background);
    glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH,  &bgw);
    glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &bgh);

    glBegin(GL_QUADS);

    /*
     * Start one background tile too early and end one too late
     * so the player can not outrun the background
     */
    for (x = -bgw; x < root->w + bgw; x += bgw)
    {
        for (y = -bgh; y < root->h + bgh; y += bgh)
        { …
Run Code Online (Sandbox Code Playgroud)

c opengl optimization sdl

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

Qt或wxWidgets

我将开始研究一个新项目.这是一款使用OpenGL for Windows,Linux和Mac OS X的3D游戏.我将需要一个用于GUI,窗口和处理输入的库.我最终有3个选择Qt,WxWidgets和GTK +.所有这些都是LGPL许可证.

1- LGPL是否允许使用这些库来制作专有应用程序?

2-这3个申请中哪一个最适合我?

gtk opengl qt wxwidgets lgpl

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

LWJGL使用slick-util渲染文本

我想使用slick-util的教程在我的openGL应用程序之上呈现一串文本:http:// lwjgl.org/wiki/index.php?title=Slick-Util_Library_-_Part_3_-_TrueType_Fonts_for_LWJGL

这是我的初始代码:

private void init() {

    try {
        Display.setDisplayMode(new DisplayMode(640, 480));
        Display.setVSyncEnabled(true);
        Display.setTitle(this.windowTitle);
        Display.create();

        Keyboard.create();

    } catch (LWJGLException e) {
        Sys.alert("Error", "Initialization failed!\n\n" + e.getMessage());
        System.exit(0);
    }

    /* OpenGL */
    int width = Display.getDisplayMode().getWidth();
    int height = Display.getDisplayMode().getHeight();

    GL11.glViewport(0, 0, width, height); // Reset The Current Viewport
    GL11.glMatrixMode(GL11.GL_PROJECTION); // Select The Projection Matrix
    GL11.glLoadIdentity(); // Reset The Projection Matrix
    GLU.gluPerspective(45.0f, ((float) width / (float) height), 0.1f, 100.0f); // Calculate The Aspect Ratio Of The Window
    GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select The …
Run Code Online (Sandbox Code Playgroud)

java opengl text render lwjgl

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

如何在C++中将位图绘制为OpenGL纹理?

我有一个位图及其句柄(Win32 HBITMAP).有关如何在OpenGL四边形上绘制此位图的任何建议(通过缩放和拉动位图的4个角来适应四边形的4个顶点)?

c++ opengl winapi textures bitmap

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