小编gen*_*ult的帖子

如何在iphone上的单独线程上使用OpenGL ES?

OpenGL ES渲染循环放在我的iphone应用程序中的一个单独的线程上.除了EAGLContext的presentRenderbuffer方法失败之外,一切都很顺利.结果是一个空白的白色屏幕.当在主线程上运行相同的代码时,presentRenderbuffer会成功并正确显示图形.在单独的线程上执行OpenGL的正确方法是什么?

iphone multithreading opengl-es

18
推荐指数
2
解决办法
2万
查看次数

EAGL:它究竟代表什么?

我忘记了,但EAGL是否代表任何特定的东西?或者它只是Core Animation OpenGL命名约定(CAEAGLLayer等)的一部分?

iphone opengl-es

17
推荐指数
1
解决办法
7363
查看次数

真正的等角投影与opengl

我是使用C++进行OpenGL编程的新手,并不是很擅长数学.是否有一种简单的方法来进行等角投影?

我指的是真正的等距投影,而不是一般的正交投影.

(等距投影仅在单位X,Y和Z矢量的投影长度相等且它们之间的角度恰好为120度时发生.)

代码片段受到高度赞赏..

c++ opengl projection isometric

17
推荐指数
2
解决办法
2万
查看次数

将四元数旋转转换为旋转矩阵?

基本上,给定一个quaterion(qx,qy,qz,qw)...我怎样才能将它转换为OpenGL旋转矩阵?我也对哪个矩阵行是"向上","向右","向前"等感兴趣...我在矢量中需要四元数的相机旋转...

opengl graphics matrix quaternions

17
推荐指数
2
解决办法
4万
查看次数

Opengl:3D上的2d HUD

我已经看过这里发布的一些关于此事的问题,但仍然无法解决为什么我的2d HUD出现但让我的3D渲染世界消失了.

编辑:似乎2d场景正在控制整个屏幕所以我时不时地看到3D场景在2d场景中出现故障.因此即使我只渲染一个10 x 10像素的四边形,它也会渲染出来,然后将剩余的屏幕空白.

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.5,20.0);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,x,y);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0,-0.5,-6.0);

glPushMatrix();

..Draw some 3d stuff...

glPopMatrix();
// Start 2d
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1, 1);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0f, 255.0f, 1.0f);
glBegin(GL_QUADS);
    glVertex2f(0.0, 0.0);
    glVertex2f(10.0, 0.0);
    glVertex2f(10.0, 10.0);
    glVertex2f(0.0, 10.0);
glEnd();
Run Code Online (Sandbox Code Playgroud)

然后我交换缓冲区

这是我的代码的顺序.就像它使得3d空间然后使得2d空间反过来取消了3d空间.

c++ opengl

17
推荐指数
2
解决办法
3万
查看次数

无法将参数1从'char*'转换为'LPCWSTR'

我试图加载BMP文件

AUX_RGBImageRec *LoadBMP(char *Filename)  // Loads A Bitmap Image
{
    FILE *File=NULL;                      // File Handle

    if (!Filename)                        // Make Sure A Filename Was Given
    {
        return NULL;                      // If Not Return NULL
    }

    File=fopen(Filename,"r");             // Check To See If The File Exists

    if (File)                             // Does The File Exist?
    {
        fclose(File);                     // Close The Handle
        return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
    }

    return NULL;                          // If Load Failed Return NULL
}
Run Code Online (Sandbox Code Playgroud)

这来自一个例子,但我现在得到错误

错误C2664:'auxDIBImageLoadW':无法将参数1从'char*'转换为'LPCWSTR'

我怎么能纠正这个?

c++ opengl char bmp visual-c++

17
推荐指数
2
解决办法
6万
查看次数

WebGL - 如何传递无符号字节顶点属性颜色值?

我的顶点由具有以下结构的数组组成:

[     Position      ][        colour        ]
[float][float][float][byte][byte][byte][byte]
Run Code Online (Sandbox Code Playgroud)

传递顶点位置没有问题:

gl.bindBuffer(gl.ARRAY_BUFFER, this.vbo);
gl.vertexAttribPointer(this.material.aVertexPosition, 3, gl.FLOAT, false, 4, 0);
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将颜色传递给着色器.不幸的是,在glsl着色器中使用整数是不可能的,所以我必须使用浮点数.如何将无符号字节颜色值转换为glsl浮点颜色值?我为r,g和b做了这样的尝试,但颜色都搞砸了:

gl.bindBuffer(gl.ARRAY_BUFFER, this.vbo);
gl.vertexAttribPointer(this.material.aR, 1, gl.BYTE, false, 15, 12);
Run Code Online (Sandbox Code Playgroud)

顶点着色器(colouredPoint.vs)

precision highp float;

attribute vec3 aVertexPosition;
attribute float aR;
attribute float aG;
attribute float aB;

uniform mat4 world;
uniform mat4 view;
uniform mat4 proj;

varying vec3 vVertexColour;

void main(void){
    gl_PointSize = 4.0;  
    gl_Position = proj * view * world * vec4(aVertexPosition, 1.0);
    vVertexColour = vec3(aR, aG, aB);
} 
Run Code Online (Sandbox Code Playgroud)

像素着色器(colouredPoint.fs)

precision highp float;

varying vec3 …
Run Code Online (Sandbox Code Playgroud)

opengl-es glsl webgl

17
推荐指数
1
解决办法
1万
查看次数

'"SDL.h"编译时没有找到这样的文件或目录

这是我当前的Makefile的一部分:

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer
Run Code Online (Sandbox Code Playgroud)

我正确安装了libsdl,SDL.h位于/ usr/include/sdl所属的地方,但它不会编译.#include "SDL.h"我的.h文件中也有这行,但仍然没有.

谁知道为什么?

c++ linux sdl

17
推荐指数
4
解决办法
8万
查看次数

带有__declspec(align('16'))的形式参数将不对齐

我正在尝试设置着色器制服的功能,但是当我尝试编译它时,我收到此错误:

错误2错误C2719:'value':带__declspec的形式参数(align('16'))将不对齐

这是功能代码:

void Shader::setUniform(std::string name, const glm::mat4 value){
    GLint uniform = glGetUniformLocation(m_program, name.c_str());
    glUniformMatrix4fv(uniform, 1, GL_FALSE, (GLfloat*)&value);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2013.

c++ opengl glm-math

17
推荐指数
1
解决办法
1万
查看次数

用PyOpenGL绘制麻烦

我想使用Qt和PyOpenGL做一些实时绘图并学习一些关于OpenGL的内容,但是甚至无法让我的initail测试数据显示出来.

这个想法是将x坐标和y坐标存储在不同的缓冲区中,因为x坐标很少会改变,而y坐标几乎每次渲染都会改变.不幸的是,让它们在不同的缓冲区中给我带来了麻烦.

现在我没有错误,没有任何东西出现,所以我不知道该去哪里.

这是我到目前为止绘图类的内容:

class GLWidget(QtOpenGL.QGLWidget):
    def __init__(self, parent=None):
        self.parent = parent
        QtOpenGL.QGLWidget.__init__(self, parent)
        self.current_position = 0

    def initializeGL(self):
        self.initGeometry()

        self.vertex_code = """
            #version 120
            attribute vec4 color;
            attribute float x_position;
            attribute float y_position;
            varying vec4 v_color;
            void main()
            {
                gl_Position = vec4(x_position, y_position, 0.0, 1.0);
                v_color = color;
            } """

        self.fragment_code = """
            #version 120
            varying vec4 v_color;
            void main()
            {
                //gl_FragColor = v_color;
                gl_FragColor = vec4(1,1,1,1);
            } """

        ## Build and activate program
        # Request program and shader …
Run Code Online (Sandbox Code Playgroud)

python opengl pyopengl qt5

17
推荐指数
1
解决办法
799
查看次数