gpt4 book ai didi

c - glfw - key_callback 中的 realloc 可能吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:32 25 4
gpt4 key购买 nike

我正在尝试使用 glfw 在 openGL 中绘图,我面临的问题是要保存点的各种坐标(我无法知道它们的值或提前有多少)我需要重新分配一个指针以获得更多空间来保存它们。
我只需要在按下按钮时重新分配指针,因此我认为将重新分配放在 key_callback 函数中是有意义的。
问题是,很明显,int *pointer 不在 key_callback 的范围内,所以我不能直接在那里重新分配它,也不能传递 >int *key_callback 因为它是一个 glfw 函数,具有我无法更改的特定参数。
我的问题是,我是否应该在 main 之外(全局)声明 int *pointer = malloc 以便它在 mainkey_callback 中都可见,增加key_callback 中的全局变量并在 main 中执行类似 if (new_variable_value != old_variable_value){realloc} 之类的操作,或者存在我没有想到的第三种选择?

这是我现在拥有的代码的框架:(显然由于很多原因它不会工作,它只是让您了解我想做什么)

key_callback(GLFWwindow *window, int key, int scancode, int action, int mods) {
// do stuff
// realloc pointer
}

int main(void) {

int *pointer = malloc(sizeof(int));
if (!pointer){
free(pointer);
exit(EXIT_FAILURE);
}

GLFWwindow *window;
glfwSetErrorCallback(error_callback);
if (!glfwInit())
exit(EXIT_FAILURE);
window = glfwCreateWindow(1280, 720, "Example", NULL, NULL);
if (!window) {
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSetKeyCallback(window, key_callback);

while (!glfwWindowShouldClose(window)) {

//draw stuff

glfwSwapBuffers(window);
glfwPollEvents();

}

free(pointer);
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}

最佳答案

User pointer :

Each window has a user pointer that can be set with glfwSetWindowUserPointer and fetched with glfwGetWindowUserPointer. This can be used for any purpose you need and will not be modified by GLFW throughout the life-time of the window.

The initial value of the pointer is NULL.

关于c - glfw - key_callback 中的 realloc 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com