我想在列表中添加一个回调函数,这将导致在适当的时候使用一个参数调用该回调。但是,我也希望将回调传递给另一个变量。
注意:我已经习惯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) 问题:
结果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)