标签: opengl

Opengl 3.3没有绘制任何东西.使用GLSL 330 Core

我正在关注本网站的指南并停止了第2课.首先,我尝试了自己的代码,但是在它不起作用之后,我只是从网站上获取了代码.除了这个之外,它仍然没有画任何东西glClearColor.

我做了什么:

  1. 检查编译和链接.工作良好
  2. 检查错误.不确定我是否做得对,但看起来一切都好(我得到1280错误,但我已经读过GLEW会导致它并且可以忽略它).
  3. glUseProgram通过主循环移动但没有得到任何结果.
  4. 更改颜色并尝试修改着色器.依然没有

我将发布我目前的代码(来自网站的原始代码):

main.cpp中

#include <stdio.h>
#include <stdlib.h>
#include <glew.h>
#include <glfw3.h>
#include <glm/glm.hpp>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>


int max(int i, int j)
{
    if (i > j) return i;
    return j;
}


GLuint LoadShaders(const char * vertex_file_path, const char * fragment_file_path){

    // Create the shaders
    GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER);
    GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);

    // Read the Vertex Shader code from the file
    std::string VertexShaderCode;
    std::ifstream VertexShaderStream(vertex_file_path, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl shader

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

如何使用鼠标在PyOpenGL中控制相机?

我们需要在python中制作3D游戏,所以在我的研究中我发现了PyOpenGL.经过一段时间的游戏,我变得难以理解如何移动相机.给我一些示例代码和解释.

python opengl mouse view pyopengl

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

根据视平面计算透视投影矩阵

我正在使用openGL,但这基本上是一个数学问题.我正在尝试计算投影矩阵,我在视图平面R(x,y,z)上有一个点和该平面N的法线向量(n1,n2,n3).我也知道眼睛在(0,0,0),我猜在技术术语中它是透视参考点.如何从这些数据中获得透视投影?我知道如何以常规方式进行FOV,纵横比以及近距离和远距离飞行.

opengl math graphics projection

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

如何在opengl中将顶点打印到控制台?

这听起来很荒谬,但我找不到任何关于如何从顶点数组(从相应的GLuint)到控制台打印顶点的信息?

我需要这样做来帮助我调试应用程序.

opengl vertex

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

在运行时更改纹理参数

我是OpenGL的初学者,并且为通用课程构建了一个小型引擎。现在,我需要实现的一个约束/功能是在运行时更改纹理质量(插值)。

因此,而不是例如:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
Run Code Online (Sandbox Code Playgroud)

它应该更改为mipmaps

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)
Run Code Online (Sandbox Code Playgroud)

现在,我有一个Texture类,将其抽象化并加载图像并为纹理等创建ID。

我会做的:我会一一绑定游戏中的所有纹理,然后再次设置参数。

或者,如果我想影响所有纹理,是否有更高级或更快速的方法来实现?

c++ opengl

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

gluLook在绘制形状后无法正常工作

我真的很困惑如何gluLookAtglOrthogluPersective一起工作.这是问题所在.

我在-5轴的z轴上绘制了一个2D三角形和一个2D五边形.

//pentagon
glVertex3f(0.5f, 0.5f, -5.0f);
glVertex3f(1.5f, 0.5f, -5.0f);
glVertex3f(0.5f, 1.0f, -5.0f);

glVertex3f(0.5f, 1.0f, -5.0f);
glVertex3f(1.5f, 0.5f, -5.0f);
glVertex3f(1.5f, 1.0f, -5.0f);

glVertex3f(0.5f, 1.0f, -5.0f);
glVertex3f(1.5f, 1.0f, -5.0f);
glVertex3f(1.0f, 1.5f, -5.0f);

//Triangle
glVertex3f(-0.5f, 0.5f, -5.0f);
glVertex3f(-1.0f, 1.5f, -5.0f);
glVertex3f(-1.5f, 0.5f, -5.0f);
Run Code Online (Sandbox Code Playgroud)

然后我定义我的相机位置(0,0,-10)和透视

//Tell OpenGL how to convert from coordinates to pixel values
glViewport(0, 0, w, h);
gluLookAt(0, 0, -10, 0, 0, -200, 0, 1, 0);
glMatrixMode(GL_PROJECTION); //Switch to setting the camera perspective

//Set the camera …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

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

Shader在iOS上看起来很糟糕但在Windows上很好

我正在为Windows和iOS开发跨平台渲染器.对于一个示例应用程序,我编写了一个在两个平台上都没有问题的着色器(Windows上的着色器版本"#version 120"和iOS上的"#version 100").

接下来我添加了两个光源,在iOS上,奇怪的事情开始发生.我改变了我的代码几次,但它从未向我展示预期的结果(使用只有一个灯光的着色器渲染火炬,这就是为什么它在iOS上看起来很好).

(1)有时一切都是一种颜色:

在此输入图像描述

(2)有时它看起来很糟糕:

在此输入图像描述

在Windows上,它看起来像我期望它看起来:

在此输入图像描述

有谁知道为什么我的着色器在iOS上这样做?

这是(2)的片段着色器:

//Light
uniform mediump float  numLights;
//L0
uniform mediump vec4   lightPosition_0;
uniform mediump vec3   lightColor_0;
uniform mediump float  lightIntensity_0;
uniform mediump float  lightAttenuation_0;
//L1
/*same as for light 0 */
//L2
/*same as for light 0 */

uniform mediump vec3    ambientColor;

uniform mediump vec3 Ka;
uniform mediump vec3 Kd;
uniform mediump vec3 Ks;

uniform sampler2D NormalMap;
uniform sampler2D DiffuseMap;
uniform sampler2D SpecularMap;

varying highp vec4 texCoordVarying;

varying highp vec4 posWorldSpace;       // pos …
Run Code Online (Sandbox Code Playgroud)

opengl glsl ios opengl-es-2.0 glsles

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

为什么OpenGL允许/使用小数值作为顶点的位置?

据我所知,点/像素的位置不能是一小部分,至少在光栅图形系统上,硬件使用像素来显示图像.

那么,为什么以及OpenGL如何使用小数值来绘制像素?

例如,怎么可能:glVertex2f(0.15f, 0.51f);

opengl

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

将自透明纹理渲染到帧缓冲区时的奇怪混合

我正在尝试将自透明纹理渲染到帧缓冲区,但我没有得到我猜到的东西:先前在帧缓冲区上渲染的所有东西都被忽略了,这个纹理与我清理主画布的颜色混合在一起.

这就是我想要的,但不使用framebuffers:

package test;

import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.*;

public class GdxTest extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;


    @Override
    public void create () {
        batch = new SpriteBatch();
        Pixmap pixmap = new Pixmap(1, 1, Pixmap.Format.RGBA8888);
        pixmap.setColor(1, 1, 1, 1);
        pixmap.fillRectangle(0, 0, 1, 1);
        // Generating a simple 1x1 white texture
        img = new Texture(pixmap);
        pixmap.dispose();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        batch.setColor(1, 1, 1, 1);
        batch.draw(img, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        batch.setColor(0, …
Run Code Online (Sandbox Code Playgroud)

opengl opengl-es libgdx

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

我可以设置openGL缓冲区来处理与OBJ文件类似的原理吗?

假设我有以下数组(每个数组都有任意长度)并将它们用作备件箱; 将它们中的每一个放入缓冲区,然后让openGL读取elements数组中的索引,并通过从每个数组块中挑选来构造顶点.

我们可以使用
{coordinate v1,normal vn3,color c1,texCoord vt4 } 构造一个顶点

或者我们可以再次使用
{coordinate v1,再次使用普通vn3,使用颜色c3,texCoord vt2 } 构建另一个顶点

请注意,"坐标数组"还不是顶点,它只提供构造顶点的位置.

在使用缓冲区和着色器的现代openGl中,对于初学者来说,这样的事情会非常困难吗?

CoordinatesArray:
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000

NormalsArray:
vn 0.000000 0.000000 -1.000000
vn -1.000000 -0.000000 -0.000000
vn -0.000000 -0.000000 1.000000
vn -0.000001 0.000000 1.000000
vn 1.000000 …

c++ opengl

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

标签 统计

opengl ×10

c++ ×4

glsl ×1

glsles ×1

graphics ×1

ios ×1

libgdx ×1

math ×1

mouse ×1

opengl-es ×1

opengl-es-2.0 ×1

projection ×1

pyopengl ×1

python ×1

shader ×1

vertex ×1

view ×1