var wasmModule = new WebAssembly.Module(wasmCode);
var wasmInstance = new WebAssembly.Instance(wasmModule, wasmImports);
// obtain the offset to the array
var offset = wasmInstance.exports.getData();
// create a view on the memory that points to this array
var linearMemory = new Uint32Array(wasmInstance.exports.memory.buffer, offset, 10);
// populate with some data
for (var i = 0; i < linearMemory.length; i++) {
linearMemory[i] = i;
}
// mutate the array within the WebAssembly module
wasmInstance.exports.add(10);
// log the results
for (var i = 0; i < linearMemory.length; i++) {
log(linearMemory[i]);
}
我有关于opengl onclick功能的问题。我绘制了一个对象(原始房子),当我点击鼠标时我想显示它。我怎么能这样做?
我的老师给出了这个命令:“在用户按下鼠标左键后,在第一部分中添加一个新对象。每次单击都会在点击位置添加一个新对象。最多可以创建10个对象然后,每次点击后,新对象应该替换第一个对象。“
答案 0 :(得分:0)
一种可能的倾向是将鼠标位置存储在长度为10的数组中。每次单击都会向数组添加一个新条目。如果数组已满,则条目将被覆盖:
#define MAX_OBJ 10
int pos_x[MAX_OBJ], pos_y[MAX_OBJ];
int count = 0;
int next_i = 0;
void onClick(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
pos_x[next_i] = x;
pos_y[next_i] = y;
next_i ++;
if ( next_i == MAX_OBJ ) next_i = 0;
if ( count < MAX_OBJ ) count ++;
}
}
在主循环中,您可以将对象绘制到已知位置:
for( int i = 0; i < MAX_OBJ; ++ i )
drawHouse( pos_x[i], pos_y[i] );