小编use*_*623的帖子

Python回调函数占位符?

我想在列表中添加一个回调函数,这将导致在适当的时候使用一个参数调用该回调。但是,我也希望将回调传递给另一个变量。

注意:我已经习惯std::bind或使用boost::bind过c ++,所以我一直在寻找类似的东西。

注意:顺便说一下,这是在Python中。

冲突问题的示例:

def collision_callback(hit, hitter)
     # doing something relevant...

object = create_object()
collision_callbacks.append(collision_callback(_1, object)) # _1 is a placeholder from C++ lol.
                                                      # as you can see here _1 is expected
                                                      # to be filled in with the hit object.
Run Code Online (Sandbox Code Playgroud)

python callback collision blender

6
推荐指数
1
解决办法
1408
查看次数

将属性传递给OpenGL顶点着色器的行为很奇怪

问题:

结果1:我将一个顶点属性传递给着色器,程序运行5秒钟,然后图形驱动程序停止响应并恢复,但程序没有.

结果2:我将帧率限制在60,然后做同样的事情.程序运行正常,但是当我尝试在同一运行时传递顶点属性的不同值时,它不会更新几何体(只传递第一个顶点属性).

我正在使用带有GLSL 140的OpenGL 3.1版.(我的显卡/驱动程序支持最高)

我尝试过的:

互联网浏览和阅读教程.由于我不太了解OpenGL,我认为问题在于我只是不知道要搜索什么.

注意:对不起,如果我有一些不好的OpenGL编码习惯,我还在学习.

码:

opengl2_vert.glsl

#version 140

in vec4 offset;

void main(void)
{
    // Declare a hard-coded array of positions
    vec4 vertices[3] = vec4[3](vec4( 0.25, -0.25, 0.5, 1.0),
    vec4(-0.25, -0.25, 0.5, 1.0),
    vec4( 0.25, 0.25, 0.5, 1.0));
    // Index into our array using gl_VertexID
    gl_Position = vertices[gl_VertexID] - offset;
}
Run Code Online (Sandbox Code Playgroud)

Game.cpp

#include "Game.h"


void Game::init()
{
    GLuint vertex_shader = getIO().loadShader("opengl2_vert.glsl", ShaderType::VERTEX);
    GLuint fragment_shader = getIO().loadShader("opengl2_frag.glsl", ShaderType::FRAGMENT);

    // Create program, attach shaders to …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glsl vertex-shader vertex-attributes

3
推荐指数
1
解决办法
1454
查看次数