标签: opengl

GLSL - 如何避免多边形重叠?

我在GLSL中制作每像素照明着色器.图为一个立方体网格,根据它们绘制的顺序,应该被遮盖的边在其他边上呈现.当我切换到我的固定功能opengl照明设置时,这不是问题.是什么导致它,我该如何解决?

它看起来像什么

顶点着色器:

varying vec4 ecPos;
varying vec3 normal;

void main()
{ 

gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;

/* first transform the normal into eye space and normalize the result */
normal = normalize(gl_NormalMatrix * gl_Normal);

/* compute the vertex position  in camera space. */
ecPos = gl_ModelViewMatrix * gl_Vertex;


gl_Position = ftransform();

} 
Run Code Online (Sandbox Code Playgroud)

片段着色器:

varying vec4 ecPos;
varying vec3 normal;

uniform sampler2D tex;
uniform vec2 resolution;

void main()
{
vec3 n,halfV,lightDir;
float NdotL,NdotHV;

vec4 color = gl_LightModel.ambient;
vec4 texC = …
Run Code Online (Sandbox Code Playgroud)

opengl lighting glsl

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

为什么OpenGL不会使其功能过载?

最近,我开始使用C++处理OpenGL.

我对通过声明Vertex或更改当前颜色的方式感到恼火

glColor3f()glVertex{2,3,4}{sdif}()方法.

那么,为什么OpenGL不会重载这些功能.

例如,输入更好glColor(),glVertex()并且它们将被参数数量及其类型识别.

最终,代码看起来会更好,更容易阅读,结果相同.

我希望有一个很好的理由不要重载类似的功能.

c++ opengl overloading

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

可以一直使用glPushAttrib(GL_ALL_ATTRIB_BITS)吗?

我想知道总是使用glPushAttrib(GL_ALL_ATTRIB_BITS)是否可以?
或者,由于某些性能问题,仅推送必要的位是否更好?

opengl

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

GLSL着色器闪烁

我不太确定这个问题出现了什么,我从来没有太多关于着色器的经验所以它可能与实际的着色器无关(很可能问题不在着色器中)

我有这个结果

在此输入图像描述

片段着色器

#version 120
void main(void) {
  gl_FragColor[0] = 0.0;
  gl_FragColor[1] = 0.0;
  gl_FragColor[2] = 0.0;
}
Run Code Online (Sandbox Code Playgroud)

顶点着色器

#version 120
attribute vec2 coord2d;

void main(void) {
  gl_Position = vec4(coord2d, 0.0, 1.0);
}
Run Code Online (Sandbox Code Playgroud)

我的渲染功能

(define (renderFunc)
  (gl:Clear gl:COLOR_BUFFER_BIT)

  (gl:UseProgram program)

  (gl:EnableVertexAttribArray attribute_coord2d)

  (gl:Begin gl:TRIANGLES)
    (gl:Vertex3f 0.0 0.8 0)
    (gl:Vertex3f -0.8 -0.8 0)
    (gl:Vertex3f 0.8 -0.8 0)
  (gl:End)

  (gl:DisableVertexAttribArray attribute_coord2d)

  (glut:SwapBuffers))
Run Code Online (Sandbox Code Playgroud)

和我的Init功能

(define (initFunc)
  (gl:ClearColor 1 1 1 1)

  (gl:Enable gl:TEXTURE_2D)
  (gl:Enable gl:LIGHTING)

  (gl:Enable gl:BLEND)
  (gl:BlendFunc gl:SRC_ALPHA gl:ONE_MINUS_SRC_ALPHA)

  (set! program (CreatePorgram …
Run Code Online (Sandbox Code Playgroud)

opengl scheme glsl

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

将函数作为参数传递给方法

我想写一个初始化openGL的简单类.我决定创建一个run初始化opengl,glutDisplayFunc,glutMainLoop的方法.我想将draw函数传递给此方法并将其用作参数glutDisplayFunc

void OpenGL::run(void(*drawFunction())) {
    this->init();
    glutDisplayFunc(drawFunction);
    glutMainLoop();
};
Run Code Online (Sandbox Code Playgroud)

但我有一个错误argument of void type *(*)() is incompatible with parameter of type void (*)().

它不工作glutDisplayFunc(&drawFunction);,并glutDisplayFunc(*drawFunction);任.有什么问题?

c++ opengl

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

未定义的变量"gl_position"

我试图绘制2个简单的三角形没什么特别的,这是着色器代码:

#version 430 core

layout(location=0) in vec4 vPosition;
void
main()
{
    gl_position=vPosition;
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,着色器代码非常小并且没有什么特别之处.当我尝试编译这段代码时,我得到了一个

未定义的变量"gl_position"

我不明白为什么因为我认为所有的gl _...变量都是全局变量.

我能做什么 ?

opengl shader glsl

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

Java - 如何在LWJGL中使用顶点缓冲区对象?

我正在尝试使用顶点缓冲区对象.

起初,在我遇到这种令人讨厌的情况之前没有任何问题:

glPointSize(2.0f);
glBegin(GL_POINTS);
for (Entity p : points) {
    glVertex3f(p.x, p.y, p.z);
}
glEnd();
Run Code Online (Sandbox Code Playgroud)

如何将其转换为Vertex缓冲区对象渲染?

我的意思是,你可以看到,数据(x,y,z)每次都为每个点改变(它是一个循环).

那么我如何实现Vertex缓冲区对象渲染呢?

java opengl lwjgl slick2d

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

洪水填充算法运行缓慢

我有flood fill算法代码.

void floodFill() {
    float target[3] = { 1.0, 1.0, 0.0 };
    float border[3] = { 1.0, 1.0, 1.0 };
    float clearp[3] = { 0.0, 0.0, 0.0 };
    std::stack<pixel*> colored;
    if (!stack.empty()) // stack contains first pixel
        colored.push(stack.top());

    while(!colored.empty()) {

        pixel *p = colored.top();
        drawPixel(p->x, p->y, target);
        colored.pop();

        //up
        float pix[3];
        glReadPixels(p->x, p->y + KOEF, 1, 1, GL_RGB, GL_FLOAT, pix);
        if (!compare(pix,border) && compare(pix,clearp)) {
            pixel *pn = new pixel();
            pn->x = p->x;
            pn->y = p->y + …
Run Code Online (Sandbox Code Playgroud)

opengl

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

错误:'my_texture'没有命名类型

我试图制作简单的纹理,但是出现了一个错误:

错误:'my_texture'没有命名类型

这里出现的地方(LoadTexture方法后面):

GLuint my_texture;
my_texture = LoadTexture( "grass.bmp" );
Run Code Online (Sandbox Code Playgroud)

这是我的代码.怎么了?

#include <iostream>
#include <GL/gl.h>
#include <GL/glut.h>
#include <stdio.h>      /* printf, scanf, NULL */
#include <stdlib.h>     /* malloc, free, rand */

using namespace std;

float _angle = 0.5f;

GLuint LoadTexture( const char * filename )
{

    GLuint texture;

    int width, height;

    unsigned char * data;

    FILE * file;

    file = fopen( filename, "rb" );

    if ( file == NULL ) return 0;
    width = 1024;
    height = 512; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glut textures

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

无法在mac上使用GLFW3创建OpenGL 3.2上下文

我一直在使用Xcode中的GLFW 2进行OpenGL项目,一切都运行得很好.我能够创建一个3.2 OpenGL上下文,并渲染一切.

但是,昨天我安装了GLFW3 lib并进行了修改建议.现在我根本无法创建3.2上下文,它总是返回3.0.3上下文.我能做错什么?

我在glfw之前加入了glew标题

这是我的初始化代码:

if(!glfwInit()){
        std::cout << "ERROR IN glfwInit()" << std::endl;
        return;
    }

    mWindow = glfwCreateWindow(mWidth, mHeight, "GLFW Renderer", NULL, NULL);;

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    if(!mWindow){
        std::cout << "ERROR IN glfwOpenWindow" << std::endl;
        glfwTerminate();
        return;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(mWindow);

    int major, minor, rev;
    glfwGetVersion(&major, &minor, &rev);
    std::cout << "OpenGL " << major << "." << minor << "." << rev << std::endl;

    glewExperimental = GL_TRUE;
    if(glewInit() != …
Run Code Online (Sandbox Code Playgroud)

opengl glfw

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

标签 统计

opengl ×10

c++ ×3

glsl ×3

glfw ×1

glut ×1

java ×1

lighting ×1

lwjgl ×1

overloading ×1

scheme ×1

shader ×1

slick2d ×1

textures ×1