openGL运行不显示图形

代码如下

#include

#include

void init();
void reshape(int w, int h);
void display(void);

void init(void)
{
glClearColor(1, 1, 0, 1.0); //指定清除颜色,即背景颜色

glShadeModel(GL_FLAT);
}

void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, (double)w, 0, (double)h);
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
int x[5] = { 180,120,140,220,240 };
int y[5] = { 180,140,60,60,140 };
////*****五边形
glBegin(GL_LINE_LOOP);
glColor3f(1, 0, 0);
for (int i = 0;i < 5;i++)
{
glVertex2i(x[i], y[i]);
}
glEnd();
//*****五角星
glBegin(GL_LINES);
glColor3f(0, 1, 0);
for (int i = 0;i < 5;i++)
{
glVertex2i(x[i], y[i]);
if (i + 2 > 4)
{
int j = (i + 2) % 5;
glVertex2i(x[j], y[j]);
}
glVertex2i(x[i+2], y[i+2]);
}
glEnd();
glFlush();
}

int main(int argc, char* argv[])
{
glutInit(&argc, argv); //初始化GLUT并处理命令行参数

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //指定模式:双缓存;RGB模式

glutInitWindowSize(500, 500); //指定窗口大小(像素)

glutInitWindowPosition(50, 50); //指定窗口左上角在屏幕上的位置

glutCreateWindow("五角星"); //使用OpenGL场景创建一个窗口,参数为窗口名称

init(); //调用初始化函数

glutDisplayFunc(display); //显示

glutReshapeFunc(reshape); //重绘

glutMainLoop();
return 0; //ANSI C要求函数main()返回一个int值

}


2个回答

gluOrtho2D的参数设置不对吧。其参数是基于归一化坐标系的,你改成-1.0,1.0,-1.0,1.0试试

在线等,好急……好几个代码都是这个问题。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
openGl程序运行不了,图像显示不出来

我按照网上的方法,下载了GLUT包,把包中的文件都放到了自己电脑相应的位置上,但是编译运行一个简单的openGl文件时,图像显示不出来,请问哪位高手能解决这个问题? ![CSDN移动问答][1] [1]: http://d.pcs.baidu.com/thumbnail/fbe716a0058a2de32e179ade2e45fd6b?fid=1091496173-250528-2192862797&time=1381993065&rt=pr&sign=FDTAR-DCb740ccc5511e5e8fedcff06b081203-v8/kKQQepwS/w4XU84CAaXa0i7E=&expires=8h&r=141023611&size=c10000_u10000&quality=100

小白求教:OpenGL如何在一个窗口同时绘制两个图形啊

我想在一个窗口同时画两个图形,希望运行后一起显示 ![图片说明](https://img-ask.csdn.net/upload/201909/14/1568474468_446005.png) ![图片说明](https://img-ask.csdn.net/upload/201909/14/1568474495_806862.png) ![图片说明](https://img-ask.csdn.net/upload/201909/14/1568474537_155630.png) ![图片说明](https://img-ask.csdn.net/upload/201909/14/1568474555_253216.png) 这是部分代码,最终结果是第二个坐标的图形,应该是值被覆盖了,请问该如何解决这个问题呢?

OpenGL图像显示和别人不一样

用老师给的源代码,原封不动运行,图像异常 原本应该是这样的 ![原本的样子](https://img-ask.csdn.net/upload/201909/20/1568908959_14748.png) 然后我电脑上是这样子的 ![我运行出来的样子](https://img-ask.csdn.net/upload/201909/20/1568908978_338083.png) 下面附上main.cpp的代码 (第一次遇到这样的问题,百度谷歌弄了一下午,把VS2013卸载安装了2019,还是搞不定,求大神帮忙,感激不尽) ``` #include "Angel.h" #pragma comment(lib, "glew32.lib") const int MENU_CHOICE_WHITE = 0; const int MENU_CHOICE_BLACK = 1; const int MENU_CHOICE_RED = 2; const int MENU_CHOICE_GREEN = 3; const int MENU_CHOICE_BLUE = 4; const int MENU_CHOICE_YELLOW = 5; const int MENU_CHOICE_ORANGE = 6; const int MENU_CHOICE_PURPLE = 7; const vec3 WHITE(1.0, 1.0, 1.0); const vec3 BLACK(0.0, 0.0, 0.0); const vec3 RED(1.0, 0.0, 0.0); const vec3 GREEN(0.0, 1.0, 0.0); const vec3 BLUE(0.0, 0.0, 1.0); const vec3 YELLOW(1.0, 1.0, 0.0); const vec3 ORANGE(1.0, 0.65, 0.0); const vec3 PURPLE(0.8, 0.0, 0.8); // 主窗口变量 const int SQUARE_NUM = 6; const int SQUARE_NUM_POINTS = 4 * SQUARE_NUM; int mainWindow; int mainWindowMenu; int mainWindowSubmenu; int width = 600; // 主窗口宽度 int height = 600; // 主窗口高度 double offsetAngle = 0; // 角度偏移量 double delta = 0.05; // 每次改变角度偏移的变化量 vec3 mainWindowSquareColor = WHITE; // 子窗口变量 const int ELLIPSE_NUM_POINTS = 100; int subWindow; int subWindowMenu; vec3 subWindowObjectColor = RED; // 获得圆上的点 vec2 getEllipseVertex(vec2 center, double scale, double verticleScale, double angle) { vec2 vertex(sin(angle), cos(angle)); vertex += center; vertex *= scale; vertex.y *= verticleScale; // 修改垂直分量 return vertex; } // 生成圆上顶点的属性 void generateEllipsePoints(vec2 vertices[], vec3 colors[], vec3 color, int startVertexIndex, int numPoints, vec2 center, double scale, double verticalScale) { double angleIncrement = (2 * M_PI) / numPoints; double currentAngle = M_PI / 2; for (int i = startVertexIndex; i < startVertexIndex + numPoints; i++) { vertices[i] = getEllipseVertex(center, scale, verticalScale, currentAngle); colors[i] = color; currentAngle += angleIncrement; } } // 获得正方形的每个角度 double getSquareAngle(int point) { return (M_PI / 4 + (M_PI / 2 * point)) + offsetAngle; } // 生成正方形上顶点的属性 void generateSquarePoints(vec2 vertices[], vec3 colors[], int squareNum, int startVertexIndex) { double scale = 0.90; double scaleAdjust = scale / squareNum; vec2 center(0.0, -0.25); int vertexIndex = startVertexIndex; for (int i = 0; i < squareNum; i++) { vec3 currentColor = 0 == i % 2 ? mainWindowSquareColor : BLACK; for (int j = 0; j < 4; j++) { double currentAngle = getSquareAngle(j); vertices[vertexIndex] = vec2(sin(currentAngle), cos(currentAngle)) * scale + center; colors[vertexIndex] = currentColor; vertexIndex++; } scale -= scaleAdjust; } } // 空闲回调函数 void idleFunction() { // 改变角度的偏移量 offsetAngle += delta; // 标记主窗口重绘 glutPostWindowRedisplay(mainWindow); } void mainWindowInit() { vec2 vertices[SQUARE_NUM * 4]; vec3 colors[SQUARE_NUM * 4]; // 创建主窗口中多个正方形 generateSquarePoints(vertices, colors, SQUARE_NUM, 0); // 创建顶点数组对象 GLuint vao[1]; glGenVertexArrays(1, vao); glBindVertexArray(vao[0]); // 创建并初始化顶点缓存对象 GLuint buffer; glGenBuffers(1, &buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices) + sizeof(colors), NULL, GL_STATIC_DRAW); // 分别读取数据 glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors); // 读取着色器并使用 GLuint program = InitShader("vshader.glsl", "fshader.glsl"); glUseProgram(program); // 从顶点着色器中初始化顶点的位置 GLuint pLocation = glGetAttribLocation(program, "vPosition"); glEnableVertexAttribArray(pLocation); glVertexAttribPointer(pLocation, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0)); // 从片元着色器中初始化顶点的颜色 GLuint cLocation = glGetAttribLocation(program, "vColor"); glEnableVertexAttribArray(cLocation); glVertexAttribPointer(cLocation, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(sizeof(vertices))); // 黑色背景 glClearColor(0.0, 0.0, 0.0, 1.0); } // 菜单回调函数 void mainWindowMenuEvents(int menuChoice) { switch (menuChoice) { case MENU_CHOICE_WHITE: mainWindowSquareColor = WHITE; break; case MENU_CHOICE_BLACK: mainWindowSquareColor = BLACK; break; case MENU_CHOICE_RED: mainWindowSquareColor = RED; break; case MENU_CHOICE_GREEN: mainWindowSquareColor = GREEN; break; case MENU_CHOICE_BLUE: mainWindowSquareColor = BLUE; break; case MENU_CHOICE_YELLOW: mainWindowSquareColor = YELLOW; break; case MENU_CHOICE_ORANGE: mainWindowSquareColor = ORANGE; break; case MENU_CHOICE_PURPLE: mainWindowSquareColor = PURPLE; break; /*在此处添加控制旋转动画开始和停止的菜单选项*/ } // 标记mainWindow主窗口进行重绘 glutPostWindowRedisplay(mainWindow); } // 创建和设置主窗口菜单 void mainWindowSetupMenu() { // 创建子菜单,并注册菜单回调函数mainWindowMenuEvents mainWindowSubmenu = glutCreateMenu(mainWindowMenuEvents); glutAddMenuEntry("Yellow", MENU_CHOICE_YELLOW); glutAddMenuEntry("Orange", MENU_CHOICE_ORANGE); glutAddMenuEntry("Purple", MENU_CHOICE_PURPLE); glutAddMenuEntry("Black", MENU_CHOICE_BLACK); // 创建主菜单 mainWindowMenu = glutCreateMenu(mainWindowMenuEvents); glutAddMenuEntry("Red", MENU_CHOICE_RED); glutAddMenuEntry("Green", MENU_CHOICE_GREEN); glutAddMenuEntry("Blue", MENU_CHOICE_BLUE); glutAddMenuEntry("White", MENU_CHOICE_WHITE); // 在主菜单中添加子菜单 glutAddSubMenu("Other Square Colors", mainWindowSubmenu); // 关联鼠标右键激活菜单 glutAttachMenu(GLUT_RIGHT_BUTTON); } void mainWindowDisplay() { mainWindowInit(); // 重绘时写入新的颜色数据 glClear(GL_COLOR_BUFFER_BIT); for (int i = 0; i < SQUARE_NUM; i++) { glDrawArrays(GL_TRIANGLE_FAN, (i * 4), 4); } glutSwapBuffers(); } // 主窗口键盘回调函数 void mainWindowKeyboard(unsigned char key, int x, int y) { /*在此添加按下Esc按键退出的代码*/ } // 主窗口鼠标回调函数 void mainWindowMouse(int button, int state, int x, int y) { if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) { // 按下鼠标中键,指定当没有其他事件处理时,去调用idleFunction()这个函数 glutIdleFunc(idleFunction); } else if (button == GLUT_MIDDLE_BUTTON && state == GLUT_UP) { // 释放鼠标中键,解除调用 glutIdleFunc(NULL); } } void subWindowInit() { vec2 vertices[ELLIPSE_NUM_POINTS]; vec3 colors[ELLIPSE_NUM_POINTS]; // 创建子窗口中的椭圆 generateEllipsePoints(vertices, colors, subWindowObjectColor, 0, ELLIPSE_NUM_POINTS, vec2(0.0, 0.0), 0.7, 0.5); // 创建顶点数组对象 GLuint vao[1]; glGenVertexArrays(1, vao); glBindVertexArray(vao[0]); // 创建并初始化顶点缓存对象 GLuint buffer; glGenBuffers(1, &buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices) + sizeof(colors), NULL, GL_STATIC_DRAW); // 分别读取数据 glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors); // 读取着色器并复用 GLuint program = InitShader("vshader.glsl", "fshader.glsl"); glUseProgram(program); // 从顶点着色器中初始化顶点的位置 GLuint pLocation = glGetAttribLocation(program, "vPosition"); glEnableVertexAttribArray(pLocation); glVertexAttribPointer(pLocation, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0)); // 从片元着色器中初始化顶点的颜色 GLuint cLocation = glGetAttribLocation(program, "vColor"); glEnableVertexAttribArray(cLocation); glVertexAttribPointer(cLocation, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(sizeof(vertices))); // 设置子窗口背景颜色为白色 glClearColor(1.0, 1.0, 1.0, 1.0); } void subWindowDisplay() { subWindowInit(); // 重绘时写入新的颜色数据 glClear(GL_COLOR_BUFFER_BIT); glDrawArrays(GL_TRIANGLE_FAN, 0, ELLIPSE_NUM_POINTS); glutSwapBuffers(); } // 子窗口键盘回调函数 void subWindowKeyboard(unsigned char key, int x, int y) { switch (key) { case 'r': subWindowObjectColor = RED; break; case 'g': subWindowObjectColor = GREEN; break; case 'b': subWindowObjectColor = BLUE; break; case 'y': subWindowObjectColor = YELLOW; break; case 'o': subWindowObjectColor = ORANGE; break; case 'p': subWindowObjectColor = PURPLE; break; case 'w': subWindowObjectColor = WHITE; break; } // 标记subWindow子窗口进行重绘 glutPostWindowRedisplay(subWindow); } void printHelp() { printf("%s\n\n", "Interaction and Submenu"); printf("Keys to update the background color in sub window:\n"); printf("'r' - red\n'g' - green\n'b' - blue\n'y' - yellow\n'o' - orange\n'p' - purple\n'w' - white\n"); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); // 启用双重缓冲 glutInitWindowSize(width, height); mainWindow = glutCreateWindow("Interaction and Submenu"); glewExperimental = GL_TRUE; glewInit(); mainWindowInit(); mainWindowSetupMenu(); glutDisplayFunc(mainWindowDisplay); // 在主窗口中指定函数mainWindowMouse,在鼠标按下或释放时将会被调用 glutMouseFunc(mainWindowMouse); // 创建子窗口 subWindow = glutCreateSubWindow(mainWindow, 0, 0, width / 4, height / 4); subWindowInit(); glutDisplayFunc(subWindowDisplay); // 在子窗口中指定函数subWindowKeyboard,当一个能够生成ASCII字符的键释放时会被调用 glutKeyboardFunc(subWindowKeyboard); // 输出帮助信息 printHelp(); glutMainLoop(); return 0; } ```

qt opengl界面开发 运行时黑屏

![图片说明](https://img-ask.csdn.net/upload/201907/12/1562926409_938019.png) 使用qt+opengl开发后,运行时突然出现这种情况,右边的黑框就是原来的opengl,现在无从下手了

关于opengl运行的一些问题

![控制台](https://img-ask.csdn.net/upload/201610/29/1477704676_776329.png)[菜单](https://img-ask.csdn.net/upload/201610/29/1477704670_648650.png) ![Sier](https://img-ask.csdn.net/upload/201610/29/1477704664_541341.png) ![KOCH截图](https://img-ask.csdn.net/upload/201610/29/1477704656_929150.png) ![KOCH](https://img-ask.csdn.net/upload/201610/29/1477704643_995091.png) 如图:代码可以运行,菜单里的分形也可以显示,但是只要选择这两个分形,窗口就如图未响应,控制台里面输入仍然有效,窗口里的分形也可以继续。只是窗口变成这样,不知道代码哪里有问题。希望有人能解答一下。ps.初学opengl,代码很low,求别嫌弃

OpenGL 3D拾取教程中鼠标点击发生偏移

最近在学习opengl shader的知识,参考的教程是 Opengl Step by Step,网站是 http://ogldev.atspace.co.uk/index.html ,在学习29部分-3D拾取的时候发生了鼠标点击与显示区域不符合的现象,发生了一定的偏移,不知道大家都没有遇到这个问题,希望大神可以指导我一下,同样学习opengl的小伙伴们留下联系方式,大家可以交流一下。

OpenGL画一棵树,在自己电脑上正常运行。转移到别人电脑上后出现问题,附图片,请大神帮我看一下,谢谢。

OpenGL画一棵树,在自己电脑上正常运行。转移到别人电脑上后出现问题,附图片,请大神帮我看一下,谢谢。![图片](https://img-ask.csdn.net/upload/201705/29/1496063640_607626.jpg)

OpenGL绘图在32位和64位机器上的疑惑

大家好, 本人项目中采用VS2013+OpenGL绘图并对图形进行拷贝,先前一直在win7 32位机器上编写程序,前段时间将编写好的程序拷贝至win10 64位机器上,发现图形能够正常显示,但拷贝功能出现了问题,几经调试也无法解决。下面是以一个简单的测试程序描述该问题。 测试程序为一个基于对话框的工程,在主对话框中有一个自定义控件用于绘图,该控件旁边有一个按钮控件Copy,其响应函数OnBnClickedButtonCopy()中对自定义控件中的图形做拷贝。自定义控件CGraphCtrl中的OnPaint函数如下: void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 //MFC绘图 CRect rc; GetClientRect(&rc); dc.MoveTo(0, 0); dc.LineTo(rc.right, rc.bottom); dc.MoveTo(rc.right, 0); dc.LineTo(0, rc.bottom); //OpenGL绘图 wglMakeCurrent(m_hDC, m_hRC); DrawGraph(); SwapBuffers(m_hDC); wglMakeCurrent(m_hDC, NULL); } 主对话框按钮控件Copy的响应函数如下: void CUsingGlut32Dlg::OnBnClickedButtonCopy() { //m_GraphCtrl.WriteBmpToFile(hBitmap, _T("WriteBmpToFile.bmp")); HBITMAP hBitmap = m_GraphCtrl.GetBmpHandle(); m_GraphCtrl.CopyBmpToClipBoard(hBitmap); } 下面图形分别为程序在win7 32位机器上的运行效果和点击按钮Copy后剪贴板中的内容: ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464225417_373890.png) ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464225551_446684.png) 运行效果和拷贝都与期望相同。 下面为该程序在win10 64位机器上的运行效果和点击按钮Copy后剪贴板中的内容: ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464225594_750790.png) ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464225641_235376.png) 运行效果相同,但拷贝似乎只针对MFC绘图部分,而没有拷贝OpenGL所绘制的内容。 下面将程序中MFC绘图部分和OpenGL绘图部分的代码顺序做了交换,如下所示: void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 //OpenGL绘图 wglMakeCurrent(m_hDC, m_hRC); DrawGraph(); SwapBuffers(m_hDC); wglMakeCurrent(m_hDC, NULL); //MFC绘图 CRect rc; GetClientRect(&rc); dc.MoveTo(0, 0); dc.LineTo(rc.right, rc.bottom); dc.MoveTo(rc.right, 0); dc.LineTo(0, rc.bottom); } 这次,程序在win7 32位机器上的运行效果和点击按钮Copy后剪贴板中的内容如下: ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464226013_720590.png) ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464226057_333525.png) 运行效果和拷贝也都与期望相同。 下面为该程序在win10 64位机器上的运行效果和点击按钮Copy后剪贴板中的内容: ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464226145_869143.png) ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464226196_96484.png) 运行效果没有显示OpenGL的内容,而且拷贝也是只针对MFC绘图部分,没有拷贝OpenGL所绘制的内容。 上述问题很让人难以理解,DC所绘内容在哪儿?RC所绘内容与DC不在同一个缓存里?显示的是后半段缓存里的内容,拷贝的是前半段缓存里的内容?OpenGL绘图结束后,调用SwapBuffers函数后,前后台缓存应该做了交换啊!难道是内存错位问题?OpenGL不兼容64位?希望那位老师或大侠能给出解释和解决方案。非常感谢!

如何使用openGL精确控制屏幕刷新率

在使用VS2013环境下,配合openGL,使用垂直同步的方式,设置显示器的刷新率为120HZ。在实际运行的时候,屏幕刷新率偶尔会降到120HZ以下,比如119HZ,118Hz等,请问各位朋友,有没有办法使用程序控制方式让屏幕的刷新率固定在120Hz,不丢帧?

OpenGL在64位计算机上无法以bmp方式拷贝绘制的图形?

大家好, 本人项目中采用VS2013+OpenGL绘图并对图形进行拷贝,测试程序为一个基于对话框的工程,在主对话框中有一个自定义控件用于绘图,该控件旁边有一个按钮控件Copy,其响应函数OnBnClickedButtonCopy()中对自定义控件中的图形做拷贝。 自定义控件CGraphCtrl中的OnPaint函数如下: void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 //MFC绘图 CRect rc; GetClientRect(&rc); dc.MoveTo(0, 0); dc.LineTo(rc.right, rc.bottom); dc.MoveTo(rc.right, 0); dc.LineTo(0, rc.bottom); //OpenGL绘图 wglMakeCurrent(m_hDC, m_hRC); DrawGraph(); SwapBuffers(m_hDC); wglMakeCurrent(m_hDC, NULL); } 主对话框按钮控件Copy的响应函数如下: void CUsingGlut32Dlg::OnBnClickedButtonCopy() { //m_GraphCtrl.WriteBmpToFile(hBitmap, _T("WriteBmpToFile.bmp")); HBITMAP hBitmap = m_GraphCtrl.GetBmpHandle(); m_GraphCtrl.CopyBmpToClipBoard(hBitmap); } 下面为该程序在win10 64位机器上的运行效果和点击按钮Copy后剪贴板中的内容: ![图片说明](https://img-ask.csdn.net/upload/201605/27/1464314555_824925.png) ![图片说明](https://img-ask.csdn.net/upload/201605/27/1464314572_576558.png) 该程序在win7 32位机器上运行正常,即点击Copy后剪贴板中的内容与界面显示的相同。 上述问题很让人难以理解,程序在64位计算机上运行时,DC所绘内容在哪儿?RC所绘内容与DC不在同一个缓存里?希望那位老师或大侠能给出解释和解决方案。非常感谢!

VS+MFC+opengl系统开发的问题?(初学)

对着书在学利用MFC建立基于多文档的应用程序框架, 书中第二章是建了一个多文档的MFC程序,最终运行结果我也调试的和书本一样,如下图 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577520327_431703.png) 但是到了第章三,他是这样说的将在MFC AppWizard产生的应用程序框架的基础上,区具体组织一个基本三维图形编辑系统的开发,(我的理解就是在上一章我建立的文件上继续扩展) 如下图 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577520535_736243.png) 接下来我发现要完成他说的步骤就一定要建立一个MFC的对话框,但是上一章是MFC的多文档。这是这一章的第一步,要建立一个对话框。 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577520786_964099.png) 我的困惑是请问这两章是如何衔接的,如果按照第二章建立了这样一个文件后要如何衔接完成下一章的工作,第二章最后是建立了这样一个文档 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577520871_238209.png) 如果建立了一个对话框,我发现就会出现两个不同的文档, ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577521018_401371.png) 所以:请问如果要在上一个文档3DEditor(MFC多文档)的基础上添加对话框该怎么操作?

(OpenGL)0xC0000005: 执行位置 0x0000000000000000 时发生访问冲突,运行glBindBuffer函数时崩溃。

1.运行一个OpenGL/CUDA相结合的样例程序,main.cpp编译成功。运行可执行文件时图形界面无法成功运行,调试过程中显示在glBindBuffer函数处程序报错。 2.main.cpp代码: ``` #include "kernel.h" #include <stdio.h> #include <stdlib.h> #ifdef _WIN32 #define WINDOWS_LEAN_AND_MEAN #define NOMINMAX #include <windows.h> #endif #ifdef __APPLE__ #include<GLUT/glut.h> #else #include <GL/glew.h> #include <GL/freeglut.h> #endif #include <cuda_runtime.h> #include <cuda_gl_interop.h> #include "interactions.h" //texture and pixel objects GLuint pbo = 0;//OpenGL pixel buffer object GLuint tex = 0;//OpenGL texture object struct cudaGraphicsResource *cuda_pbo_resource; void render() { uchar4 *d_out = 0; cudaGraphicsMapResources(1, &cuda_pbo_resource, 0); cudaGraphicsResourceGetMappedPointer((void**)&d_out, NULL, cuda_pbo_resource); kernelLauncher(d_out,W, H, loc); cudaGraphicsUnmapResources(1, &cuda_pbo_resource, 0); } void drawTexture() { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, W, H, 0, GL_RGBA,GL_UNSIGNED_BYTE,NULL); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(0, 0); glTexCoord2f(0.0f, 1.0f); glVertex2f(0, H); glTexCoord2f(1.0f, 1.0f); glVertex2f(W, H); glTexCoord2f(1.0f, 0.0f); glVertex2f(W, 0); glEnd(); glDisable(GL_TEXTURE_2D); } void display() { render(); drawTexture(); glutSwapBuffers(); } void initGLUT(int *argc, char** argv) { glutInit(argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutInitWindowSize(W,H); glutCreateWindow(TITLE_STRING); #ifdef __APPLE__ glewInit(); #endif } void initPixelBuffer() { GLuint pbo = 0; glGenBuffers(1, &pbo); glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo); glBufferData(GL_PIXEL_UNPACK_BUFFER, 4 * W * H * sizeof(GLubyte), 0, GL_STREAM_DRAW); GLuint tex = 0; glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); cudaGraphicsGLRegisterBuffer(&cuda_pbo_resource, pbo, cudaGraphicsMapFlagsWriteDiscard); } void exitfunc() { if (pbo) { cudaGraphicsUnregisterResource(cuda_pbo_resource); glDeleteBuffers(1, &pbo); glDeleteTextures(1, &tex); } } int main(int argc,char** argv) { printInstructions(); initGLUT(&argc, argv); gluOrtho2D(0, W, H, 0); glutKeyboardFunc(keyboard); glutSpecialFunc(handleSpecialKeypress); glutPassiveMotionFunc(mouseMove); glutMotionFunc(mouseDrag); glutDisplayFunc(display); initPixelBuffer(); glutMainLoop(); atexit(exitfunc); return 0; } ``` 3.报错信息:0x0000000000000000 处(位于 dist_2d_cuda.exe 中)引发的异常: 0xC0000005: 执行位置 0x0000000000000000 时发生访问冲突。 请问具体是什么问题呢,向各位求助~

在MFC中实现交互,拖动鼠标使三维图像旋转的问题

是我的毕设中的一个目标,之前是实现了MFC的三维数据图像显示,现在导师要我做一个交互,拖动鼠标使图像旋转,不用openGL 目前是使用trackball,通过获取鼠标点击和释放点的坐标得到旋转矩阵,然后对视点进行旋转,实现图像的旋转。可是程序运行的问题是我拖动鼠标,图像没有旋转而是在放大跟缩小,找了两三天都不知道问题出在哪里,求大神指导! 本人c++小白,MFC小白·····

如何利用MFC将物体运动的轨迹实时划出来?

主要想实现的功能是在界面上添加一个显示运动轨迹的控件按钮, 可是用的函数的是运控卡内封装好的函数,请问有可能实现 实时显示出运动轨迹图像这一想法吗?希望能给些思路 谢谢!

MFC中对话框中控件随对话框大小改变而等比例变化

本人刚开始学习MFC,C++也不是很好,在做MFC界面适配时遇到一些问题,求帮助!!! 对话框内的控件随着对话框的大小改变而等比例改变的问题,本人也在网上搜索到一些资料,试了一下成功了! 但是却出现了一个BUG!首先把代码给大家看一下吧! 1.在CMyDlg.h中添加一个声明: CRect m_rect; 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(); if (nType == 1) return; //如果最小化则什么都不做 CWnd *pWnd; pWnd = GetDlgItem(IDC_BUTTONA); //获取背景图片控件句柄 ChnageSize(pWnd, cx, cy); pWnd = GetDlgItem(IDC_BUTTONB); //获取控件句柄 ChnageSize(pWnd, cx, cy); pWnd = GetDlgItem(IDC_PICTURE); //获取控件句柄 ChnageSize(pWnd, cx, cy); pWnd = GetDlgItem(IDD_DIALOG1_1); //获取控件句柄 ChnageSize(pWnd, cx, cy); pWnd = GetDlgItem(IDD_DIALOG2_2); //获取控件句柄 ChnageSize(pWnd, cx, cy); GetClientRect(&m_rect); //将变化后的对话框大小恢复 InvalidateRect(&m_rect); 其中函数ChangeSize是手动添加的用户函数,步骤如下 3.添加一个改变控件大小的用户函数,void ChangeSize(CWnd *pWnd, int cx, int cy),并编写代码 if (pWnd) { CRect rect; //获取控件变化前的大小 pWnd->GetWindowRect(&rect); ScreenToClient(&rect); //将控件大小转换为对话框中的区域坐标 rect.left = rect.left * cx / m_rect.Width(); rect.right = rect.right * cx / m_rect.Width(); rect.top = rect.top * cy / m_rect.Height(); rect.bottom = rect.bottom * cy / m_rect.Height(); pWnd->MoveWindow(&rect); //设置控件大小 } 在运行成功后控件可以实现放大缩小功能,但是随着对话框不断的放大缩小,控件会逐渐的向左上方移动,到达顶部的时候会压缩变小????哪位大神能指点一下,谢谢了!!!真心求教导!!!

Webgl画6个颜色不同的面的正方体

学WebGL的时候照着书上打了一段代码,结果发现运行到网页上只有背景颜色,没有正方体,看控制台也没有错误信息输出,实在是不知道哪里错了... js的代码 var VSHADER_SOURCE= 'attribute vec4 a_Position;\n'+ 'attribute vec4 a_Color;\n'+ 'uniform mat4 u_MvpMatrix;\n'+ 'varying vec4 v_Color;\n'+ 'void main(){\n'+ ' gl_Position=u_MvpMatrix*a_Position;\n'+ ' v_Color=a_Color;\n'+ '}\n'; var FSHADER_SOURCE= '#ifdef GL_ES\n'+ 'precision mediump float;\n'+ '#endif\n'+ 'varying vec4 v_Color;\n'+ 'void main(){\n'+ ' gl_FragColor=v_Color;\n'+ '}\n'; function main(){ var canvas =document.getElementById('webgl'); var gl=getWebGLContext(canvas); if(!gl){ console.log('Failed to get the rendering context for WebGL'); return; } // Initialize shaders if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { console.log('Failed to intialize shaders.'); return; } // Set the vertex information var n = initVertexBuffers(gl); if (n < 0) { console.log('Failed to set the vertex information'); return; } // Set the clear color and enable the depth test gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.enable(gl.DEPTH_TEST); var u_MvpMatrix=gl.getUniformLocation(gl.program,'u_MvpMatrix'); if(!u_MvpMatrix){ console.log('fail to get the storage Location of u_MvpMatrix'); return ; } var mvpMatrix=new Matrix4(); mvpMatrix.setPerspective(30,1,1,100);//设置透明投影可视空间 mvpMatrix.lookAt(3,3,7,0,0,0,1,0);//创建视图矩阵 //传递数据 gl.uniformMatrix4fv(u_MvpMatrix,false,mvpMatrix.elements); gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT); gl.drawElements(gl.TRIANGLES,n,gl.UNSIGNED_BYTE,0); console.log(''+n); } function initVertexBuffers(gl) { // Create a cube // v6----- v5 // /| /| // v1------v0| // | | | | // | |v7---|-|v4 // |/ |/ // v2------v3 //创建方式创建6个面,对每个面的顶点指定相同的颜色 var vertices = new Float32Array([ // Vertex coordinates 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0,-1.0, 1.0, 1.0,-1.0, 1.0, // v0-v1-v2-v3 front 1.0, 1.0, 1.0, 1.0,-1.0, 1.0, 1.0,-1.0,-1.0, 1.0, 1.0,-1.0, // v0-v3-v4-v5 right 1.0, 1.0, 1.0, 1.0, 1.0,-1.0, -1.0, 1.0,-1.0, -1.0, 1.0, 1.0, // v0-v5-v6-v1 up -1.0, 1.0, 1.0, -1.0, 1.0,-1.0, -1.0,-1.0,-1.0, -1.0,-1.0, 1.0, // v1-v6-v7-v2 left -1.0,-1.0,-1.0, 1.0,-1.0,-1.0, 1.0,-1.0, 1.0, -1.0,-1.0, 1.0, // v7-v4-v3-v2 down 1.0,-1.0,-1.0, -1.0,-1.0,-1.0, -1.0, 1.0,-1.0, 1.0, 1.0,-1.0 // v4-v7-v6-v5 back ]); var colors = new Float32Array([ // Colors 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, // v0-v1-v2-v3 front(blue) 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, // v0-v3-v4-v5 right(green) 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, 1.0, 0.4, 0.4, // v0-v5-v6-v1 up(red) 1.0, 1.0, 0.4, 1.0, 1.0, 0.4, 1.0, 1.0, 0.4, 1.0, 1.0, 0.4, // v1-v6-v7-v2 left 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, // v7-v4-v3-v2 down 0.4, 1.0, 1.0, 0.4, 1.0, 1.0, 0.4, 1.0, 1.0, 0.4, 1.0, 1.0 // v4-v7-v6-v5 back ]); //通过索引找到对应点位,这种方式好像只是为了减小画的点个数 var indices = new Uint8Array([ // Indices of the vertices 0, 1, 2, 0, 2, 3, // front 4, 5, 6, 4, 6, 7, // right 8, 9,10, 8,10,11, // up 12,13,14, 12,14,15, // left 16,17,18, 16,18,19, // down 20,21,22, 20,22,23 // back ]); var indexBuffer=gl.createBuffer(); if(!indexBuffer) return -1; if(!initArrayBuffer(gl,vertices,3,gl.FLOAT,'a_Position')) { return -1; } if(!initArrayBuffer(gl,colors,3,gl.FLOAT,'a_Color')){ return -1; } //将索引写入缓冲区 gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indices,gl.STATIC_DRAW); return indices.length; } //定义缓冲区对象的创建,绑定,数据写入,开启等操作 function initArrayBuffer(gl,data,num,type,attribute){ var buffer=gl.createBuffer(); if(!buffer){ console.log('fail to create a buffer'); return false; } gl.bindBuffer(gl.ARRAY_BUFFER,buffer); gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW); // Assign the buffer object to the attribute variable var a_attribute = gl.getAttribLocation(gl.program, attribute); if (a_attribute < 0) { console.log('Failed to get the storage location of ' + attribute); return false; } gl.vertexAttribPointer(a_attribute, num, type, false, 0, 0); // Enable the assignment of the buffer object to the attribute variable gl.enableVertexAttribArray(a_attribute); return true; } html的代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Draw cube with specification of face color</title> </head> <body onload="main()"> <canvas id="webgl" width="400" height="400"> Please use a browser that supports "canvas" </canvas> <script src="../lib/webgl-utils.js"></script> <script src="../lib/webgl-debug.js"></script> <script src="../lib/cuon-utils.js"></script> <script src="../lib/cuon-matrix.js"></script> <script src="ColoredCube.js"></script> </body> </html> 希望哪位前辈有时间的帮我看看哪里出错了...谢谢了

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

立即提问
相关内容推荐