小编Def*_*yke的帖子

Blender 2.6 JSON导出器,纹理错误只有立方体的一面

我正在为Blender 2.6x制作一个简单的导出器,用于自定义JSON格式(主要用于WebGL),因为我在网上找到的现有版本不适用于Blender 2.6.

我差点搞定了,但还有一个我无法弄清楚的错误.在一个简单的立方体上,其一侧的纹理方向错误.立方体的其余部分纹理正确.

您可以在此处看到问题的图片(左侧的左侧面朝向错误,与右侧的正确立方体相比):

错误

是否存在一些可能导致此行为发生的常见误解或错误?

这是从Blender 2.65导出到我的自定义JSON格式的函数(错误必须在这里,但我找不到它):

def get_json(objects, scene):
    """ Currently only supports one scene. 
        Exports with -Z forward, Y up. """

    object_number = -1
    scene_data = []

    # for every object in the scene
    for object in bpy.context.scene.objects:

        # if the object is a mesh       
        if object.type == 'MESH':

            object_number += 1

            # convert all the mesh's faces to triangles
            bpy.ops.object.mode_set(mode='OBJECT')
            object.select = True
            bpy.context.scene.objects.active = object

            # triangulate using new Blender 2.65 Triangulate modifier
            bpy.ops.object.modifier_add(type='TRIANGULATE')
            object.modifiers["Triangulate"].use_beauty …
Run Code Online (Sandbox Code Playgroud)

python opengl json blender webgl

8
推荐指数
1
解决办法
700
查看次数

SDL2 OpenGL3如何在函数内初始化SDL

我正在尝试新的SDL2测试版和OpenGL3上下文,我遇到了一个奇怪的问题:

如果我在main()函数中运行SDL初始化代码,它工作正常,但我想在separete init_sdl()函数中使用此代码.

如果我将初始化代码放在单独的init_sdl()函数中,并从main()调用此函数,则从不绘制背景颜色,程序开始疯狂地消耗我所有系统的资源.

有人能指出我在一个单独的函数中初始化SDL的工作示例吗?我似乎无法找到一个......也许这是不可能的?我想我依旧记得在SDL 1.2中遇到了类似的问题,但是自从我使用它以来已经有几年了,而且我认为我没有找到解决方案.事实上,这可能是我选择转而使用SFML的原因.

我真的想使用SDL2代替SFML,因为它运行在更多平台上,但是无法将内容分成小功能对我来说是一个交易破坏者.这应该很容易,我错过了一些明显的东西吗?

编辑:

这有效:

#include <iostream>
#include <GL/glew.h>
#include <SDL.h>
#define PROGRAM_NAME "SDL2 OpenGL3 Example"

int main(int argc, char** argv)
{
    SDL_Window* sdl2_window = 0;
    SDL_GLContext opengl3_context;

    SDL_Init(SDL_INIT_VIDEO);

    // set the opengl context version
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);

    // turn on double buffering set the depth buffer to 24 bits
    // you may need to change this to 16 or 32 for your system
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

    // create the sdl2 window
    sdl2_window = …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sdl opengl-3 sdl-2

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

OpenGL3显示错误的纹理

我想在我的程序中添加第二个sampler2DRect纹理.我正在为第二个纹理使用单独的着色器文件,否则我使用的是用于显示第一个纹理的相同代码.但是,当我尝试显示第二个纹理时,它会显示第一个纹理,而我似乎无法找出原因.我可能做错了一个API调用,或者可能省略了一些重要的东西,但我没有尝试解决问题.

没有报告GL错误,并且gDEBugger没有显示任何可疑信息.

我想问题可能在我的代码中的其他地方,但是这里是我用来尝试绘制第二个纹理的部分(这几乎与用于绘制第一个纹理的代码相同):

Test_World_Pause_Menu::Test_World_Pause_Menu(int resolution_width, int resolution_height)
    : _shaders("shaders/pause_menu.vert", "shaders/pause_menu.frag"),
      _vao_id( new GLuint[1] ),
      _mvp_id( new GLint[1] ),
      _pm_tex_id( new GLuint[1] ),
      _mvp( glm::ortho(0.0f, (GLfloat)resolution_width, 0.0f, (GLfloat)resolution_height, -1.0f, 1.0f) ),
      _pm_vertices_buffer( new GLuint[1] ),
      _pm_vertices( new GLfloat[12] ),
      _pm_colors_buffer( new GLuint[1] ),
      _pm_colors( new GLfloat[16] ),
      _pm_tex_coords_buffer( new GLuint[1] ),
      _pm_tex_coords( new GLfloat[8] ),
      _pm_normals_buffer( new GLuint[1] ),
      _pm_normals( new GLfloat[12] )
{
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);  // set alpha blending mode

    // begin pause menu initialization
    _pm_image.loadFromFile("resources/levels/test_00/pause_menu/pause_menu.png");
    _pm_image.flipVertically();

    unsigned int pm_location_x …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sfml opengl-3

2
推荐指数
1
解决办法
1529
查看次数

标签 统计

opengl ×3

c++ ×2

opengl-3 ×2

blender ×1

json ×1

python ×1

sdl ×1

sdl-2 ×1

sfml ×1

webgl ×1